本教程中包含两个脚本,可帮助您确定高 CPU/内存消耗进程在 Linux 上运行的时间。
该脚本将向您显示进程 ID、进程所有者、进程名称以及进程运行的时间。
这可以使用 ps 命令来实现。
什么是ps命令
ps 代表进程状态,它显示有关系统上活动/正在运行的进程的信息。
它提供当前进程的快照以及详细信息,如用户名、用户 ID、CPU 使用情况、内存使用情况、进程开始日期和时间命令名称等。
1) Bash 脚本来检查高 CPU 消耗进程在 Linux 上运行了多长时间
此脚本将帮助您确定高 CPU 消耗进程在 Linux 上运行的时间。

# vim /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 "--------------------------------------------------"
执行脚本得到如下结果:

2) 检查高内存消耗进程在 Linux 上运行多长时间的 shell 脚本

#vim 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 "--------------------------------------------------"
运行得到如下结果:

脚本文件:
