使用此命令我可以找到所有进程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,并杀死每一个。