Linux中國

實用腳本:檢查高 CPU / 內存消耗進程

過去,我們寫了三篇不同的文章來使用 Linux 命令來識別這些進程

你可以通過下面相關的 URL 立即訪問:

本教程中包含兩個腳本,它們可以幫助你確定 Linux 上高 CPU/內存消耗進程的運行時間。

該腳本將顯示進程 ID、進程的所有者、進程的名稱以及進程的運行時間。這將幫助你確定哪些(必須事先完成)作業正在超時運行。這可以使用 ps 命令來實現。

什麼是 ps 命令

ps 進程狀態 processes status ,它顯示有關係統上活動/正在運行的進程的信息。

它提供了當前進程的快照以及詳細信息,例如用戶名、用戶 ID、CPU 使用率、內存使用率、進程開始日期和時間等。

1)檢查高 CPU 消耗進程在 Linux 上運行了多長時間的 Bash 腳本

該腳本將幫助你確定高 CPU 消耗進程在 Linux 上運行了多長時間。

# vi /opt/scripts/long-running-cpu-proc.sh

#!/bin/bash
ps -eo pid,user,ppid,%mem,%cpu,cmd --sort=-%cpu | head | tail -n +2 | awk '{print $1}' > /tmp/long-running-processes.txt
echo "--------------------------------------------------"
echo "UName     PID  CMD            Process_Running_Time"
echo "--------------------------------------------------"
for userid in `cat /tmp/long-running-processes.txt`
do
username=$(ps -u -p $userid | tail -1 | awk '{print $1}')
pruntime=$(ps -p $userid -o etime | tail -1)
ocmd=$(ps -p $userid | tail -1 | awk '{print $4}')
echo "$username $userid $ocmd $pruntime"
done | column -t
echo "--------------------------------------------------"

long-running-cpu-proc.sh 設置可執行的 Linux 文件許可權

# chmod +x /opt/scripts/long-running-cpu-proc.sh

運行此腳本時,你將獲得類似以下的輸出:

# sh /opt/scripts/long-running-cpu-proc.sh

-------------------------------------------------UName     PID  CMD       Process_Running_Time
-------------------------------------------------daygeek  5214  Web       01:18:48
daygeek  5748  Web       01:08:20
daygeek  8043  inkscape  22:11
daygeek  5269  Web       01:18:31
daygeek  1712  Web       10:44:50
daygeek  5335  RDD       01:17:54
daygeek  1639  firefox   10:44:51
daygeek  7793  nautilus  24:14
daygeek  6301  Web       57:40
-------------------------------------------------

2)檢查高內存消耗進程在 Linux 上運行了多長時間的 Bash 腳本

該腳本將幫助你確定最大的內存消耗進程在 Linux 上運行了多長時間。

# sh /opt/scripts/long-running-memory-proc.sh

#!/bin/bash
ps -eo pid,user,ppid,%mem,%cpu,cmd --sort=-%mem | head | tail -n +2 | awk '{print $1}' > /tmp/long-running-processes-1.txt
echo "--------------------------------------------------"
echo "UName     PID  CMD          Process_Running_Time"
echo "--------------------------------------------------"
for userid in `cat /tmp/long-running-processes-1.txt`
do
username=$(ps -u -p $userid | tail -1 | awk '{print $1}')
pruntime=$(ps -p $userid -o etime | tail -1)
ocmd=$(ps -p $userid | tail -1 | awk '{print $4}')
echo "$username $userid $ocmd $pruntime"
done | column -t
echo "--------------------------------------------------"

long-running-memory-proc.sh 設置可執行的 Linux 文件許可權。

# chmod +x /opt/scripts/long-running-memory-proc.sh

運行此腳本時,你將獲得類似以下的輸出:

# sh /opt/scripts/long-running-memory-proc.sh

-------------------------------------------------UName    PID   CMD       Process_Running_Time
-------------------------------------------------daygeek  1639  firefox   10:44:56
daygeek  2997  Web       10:39:54
daygeek  5269  Web       01:18:37
daygeek  1712  Web       10:44:55
daygeek  8043  inkscape  22:17
daygeek  5214  Web       01:18:54
daygeek  1898  Web       10:44:48
daygeek  1129  Xorg      10:45:07
daygeek  6301  Web       57:45
-------------------------------------------------

via: https://www.2daygeek.com/bash-script-to-check-how-long-the-high-cpu-memory-consumption-processes-runs-on-linux/

作者:Magesh Maruthamuthu 選題:lujun9972 譯者:geekpi 校對:校對者ID

本文由 LCTT 原創編譯,Linux中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的電子郵箱地址不會被公開。 必填項已用 * 標註

    此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

    More in:Linux中國