我目前正在尝试终止任何已运行超过 48 小时且名为“cool-program”的程序
我知道如果我跑
ps -eo pid,cmd,comm,etime | grep -i cool-program | grep -v grep
它给了我一个程序列表,现在我不知道如何进一步过滤它以仅显示运行超过一天的程序
给出注释让它打印出pid
我正在使用的酷程序列表,但当我尝试将其传输到它时,kill
它不会终止程序
ps -eo bsdstart,pid,comm | grep -i ffmpeg | grep -v '^[ 0-9]' | awk '{ print $3 }'
答案1
它的手册页ps
指出如果您使用bsdstart
它将显示命令启动的时间:
bsdstart START time the command started. If the process was
started less than 24 hours ago, the output format
is " HH:MM", else it is " Mmm:SS" (where Mmm is
the three letters of the month). See also
lstart, start, start_time, and stime.
然后,您可以使用组合命令来提取日期、pid 和运行的命令,并使用 grep 排除-v
以数字或空格开头然后是数字的行,如下所示:
ps -eo bsdstart,pid,cmd | grep -i cool-porgram | grep -v '^[ 0-9]'
要杀死它们,命令是:
sudo kill $(ps -eo bsdstart,pid,cmd | grep -i cool-porgram | grep -v '^[ 0-9]' | awk '{print $3}')
希望这可以帮助!