你可以结合使用 ps 、 awk 和 kill 来做到这一点:
ps -eo pid,etime,comm
Run Code Online (Sandbox Code Playgroud)
为您提供三列输出,其中包含进程 PID、自进程启动以来经过的时间和命令名称,不带参数。经过的时间看起来像以下之一:
mm:ss
hh:mm:ss
d-hh:mm:ss
Run Code Online (Sandbox Code Playgroud)
由于您想要运行超过一周的进程,您将寻找与第三个模式匹配的行。您可以使用 awk 通过运行时间和命令名称过滤掉进程,如下所示:
ps -eo pid,etime,comm | awk '$2~/^7-/ && $3~/mycommand/ { print $1 }'
Run Code Online (Sandbox Code Playgroud)
这将打印与“mycommand”匹配且已运行超过 7 天的所有命令的 pid。将该列表传送到 kill 中,您就完成了:
ps -eo pid,etime,comm | awk '$2~/^7-/ && $3~/mycommand/ { print $1 }' | kill -9
Run Code Online (Sandbox Code Playgroud)
killall --quiet --older-than 1w process_name
| 归档时间: |
|
| 查看次数: |
31071 次 |
| 最近记录: |