首頁  >  文章  >  電腦教學  >  如何檢查Linux中進程運行了多長時間

如何檢查Linux中進程運行了多長時間

WBOY
WBOY轉載
2024-03-10 08:04:171132瀏覽

進程的運作時間是指進程自啟動以來所經過的時間。

檢查進程的運行時間可以幫助我們確定係統中哪些進程已經運行了多長時間。這對於識別導致系統回應變慢和系統資源佔用過高的問題至關重要。

我們及時發現並處理這些長時間運行的進程,可以提高系統的穩定性和效能。

如何檢查Linux中進程運行了多長時間

#使用ps指令

ps指令是一個用來報告目前系統進程狀態的強大工具。

透過結合不同的選項,我們可以獲得有關進程的各種信息,包括進程運行時間。

使用以下命令可以查看進程的基本信息,包括進程 ID(PID)、運行時間等:

ps -eo pid,cmd,etime
  • -e: 顯示所有行程
  • -o: 指定輸出的格式

上述指令輸出的欄位中,etime 表示行程的執行時間。

例如:

PID CMDELAPSED
 1234 /usr/bin/example-process02:30:45

這表示 PID 為 1234 的進程 example-process 已經運作了2小時30分鐘45秒。

使用top指令

top 是一個即時監控系統程序的命令列工具,提供了一個動態更新的進程清單。

執行下列指令啟動 top

top

在 top 介面,你可以按 Shift E 鍵來切換顯示進程的運作時間。

這會讓進程清單中包含 TIME  列,顯示進程已執行的總時間。

PID USERPRNIVIRTRESSHR S%CPU%MEM TIME+ COMMAND
1234 user 20 020001210560 8204 R 5.0 0.302:30:45 example-process

在這個範例中,example-process 的運行時間為2小時30分鐘45秒。

使用pstree指令

#pstree 指令以樹狀圖的形式顯示流程的層級結構。透過查看進程樹,我們可以更清楚地了解進程之間的關係,並查看它們的運行時間。

執行下列指令使用 pstree 檢視進程樹:

pstree -p

其中,-p 選項顯示進程的 PID。輸出可能如下:

init(1)─┬─systemd─┬─(sd-pam)
│ ├─...
│ └─(process-1)
├─(process-2)
├─(process-3)
└─...

透過查看這個樹狀結構,你可以識別每個進程及其子進程,並在需要時了解它們的運行時間。

使用/proc檔案系統

#Linux 中的 /proc 目錄是一個虛擬檔案系統,提供了有關係統和進程的資訊。

我們可以透過讀取 /proc 下的檔案來獲取進程的詳細信息,包括運行時間。

透過讀取 /proc/[PID]/stat 文件,我們可以獲得有關特定進程的詳細信息,包括運行時間。

以下是一個範例:

cat /proc/1234/stat

輸出可能如下:

1234 (example-process) S 0 1234 1234 0 -1 4194560 385 0 0 0 0 0 0 0 20 0 1 0 12345678 1024 18446744073709551615 134512640 134513319 4294956704 18446744073709551615 135481464 0 0 0 0 17 1 0 0 0 0 0 0 0 0 0

在輸出中,第 22 列(從左數)表示進程的運行時間,以時鐘滴答為單位。

使用htop

htop 是一個互動式的、更友善的進程檢視工具,相對於傳統的 top 指令更為強大且直覺。

執行下列指令啟動 htop

htop

在 htop 介面,你可以使用箭頭鍵和功能鍵來導覽和執行各種操作。

按下 F6 鍵,選擇並啟用 TIME  以顯示流程的運作時間。

PID USERPRINIVIRTRESSHR S%CPU%MEM TIME+ COMMAND
1234 user20 020001210560 8204 R 5.0 0.302:30.45 example-process

這裡,TIME  列顯示進程的運行時間,以小時、分鐘和秒的格式呈現。

使用Systemd工具

#Systemd 是一套系統和服務管理器,提供了多種工具來監控和控制系統上執行的進程。

透過執行以下命令,你可以使用 systemctl 查看特定服務的詳細信息,包括運行時間:

systemctl status example-service

輸出中包含了服務的詳細信息,其中也包括了運行時間:

● example-service.service - Example Service
 Loaded: loaded (/etc/systemd/system/example-service.service; enabled; vendor preset: enabled)
 Active: active (running) since Mon 2024-03-01 12:00:00 UTC; 2h 30min ago
 Main PID: 1234 (example-process)
Tasks: 1 (limit: 4915)
 Memory: 10.5M
 CGroup: /system.slice/example-service.service
 └─1234 /usr/bin/example-process

在輸出中,Active 部分顯示了服務的活動狀態以及自啟動以來的時間。

编写脚本自动化检查

使用Shell脚本

创建一个 Shell 脚本文件,比如 check_process_time.sh,并添加以下内容:

#!/bin/bash

# 设置要检查的进程名称
process_name="example-process"

# 获取进程运行时间
process_time=$(ps -eo cmd,etime | grep "$process_name" | awk '{print $NF}')

echo "Process $process_name has been running for: $process_time"

保存脚本文件后,赋予执行权限并运行:

chmod +x check_process_time.sh
./check_process_time.sh

脚本将输出指定进程的运行时间,方便用户定期执行以监控进程状态。

定时执行脚本

使用 cron 或 systemd 的定时任务功能,你可以定期执行上述脚本,以便及时了解进程的运行时间。

下面是使用 cron 的例子:

# 打开定时任务编辑器
crontab -e

添加以下行来每小时执行一次脚本:

0 * * * * /path/to/check_process_time.sh

保存并退出编辑器。

以上是如何檢查Linux中進程運行了多長時間的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:mryunwei.com。如有侵權,請聯絡admin@php.cn刪除