跳至內容

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

更新時間
连续6年不跑路的安全速度最适合国人VPN
连续6年不跑路的安全速度最适合国人VPN

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

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

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

使用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+ COMMAND1234 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+ COMMAND1234 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中進程運行了多長時間的詳細內容,更多請關注本站其它相關文章!

更新時間

發表留言

請注意,留言須先通過審核才能發佈。