如何在unix中查找超过一天的wget进程?

如何在unix中查找超过一天的wget进程?

使用此命令我可以找到所有进程wget

ps -aef | grep -i wget

但是我想要一个命令或脚本,它可以为我提供超过一天的wget进程kill

答案1

您可以尝试格式化 ps 的输出:

ps -ae -o start,pid,command

如果该过程已超过 24 小时,则第一列显示日期而不是时间。

答案2

只要您在说超过一天时指的是“超过 24 小时”,那么这应该有效。

for wgetpid in $(ps -eo "%t %p %c" | grep "^ *[0-9][0-9]*-" | grep wget | cut -d ' ' -f 2);
do
    kill -9 $wgetpid
done

ps -eo 命令输出时间(格式为 [[dd-]hh:]mm:ss)、pid 和进程名称。

如果该进程运行的时间少于 24 小时,则时间内没有 -。

第一个 grep 命令匹配以 (^) 零个或多个空格(如果有任何进程已经运行了 10 天或更长时间,则运行了 1-9 天的进程会缩进)、数字、零个或多个数字(2 位以上的天数)开头的行,然后是 - ,表示前一个数字是天数。

第二个 grep 将其过滤为 wget 进程。

cut 命令仅抓取第二个字段 (pid)。

然后 for 循环遍历这些 pid,并杀死每一个。

相关内容