我的目标是在bash中查找超过“x”分钟的进程数。
到目前为止,我可以查看所有进程执行时间:
ps -eo etime,cmd | grep mysuperspecialprocess.sh | grep -Ev 'grep' | awk '{print $1}'
我管道wc -l
来计算结尾。
如何对结果进行grep或循环以将其限制为超过特定分钟数的进程?
答案 0 :(得分:2)
试试这个测试版本。
它搜索指定的正在运行的进程,并计算所有相关的经过时间大于指定秒数的事件。
首先设置参数值并运行它。
$ cat ./script.sh
#!/bin/bash --
process_name=mysuperspecialprocess.sh
elapsed_time_seconds=600
ps -eo etimes,cmd | fgrep "${process_name}" | fgrep -v fgrep | ( count=0 ; while read etimes cmd ; do \
if [ $etimes -gt $elapsed_time_seconds ] ;\
then \
count=$((count+1)) ;\
fi ;\
done ; echo $count )
etimes 指示 ps 显示秒数。
答案 1 :(得分:0)
appname.appspot.com
救援!
从etime字段开始,您可以执行与此类似的操作,忽略秒。
awk