特定进程退出后如何关闭系统

特定进程退出后如何关闭系统

我正在下载一些软件;我可以看到pid下载过程top。假设它是1001.

如何才能使我的计算机在进程1001退出后关闭?

答案1

这个单行循环检查进程 ID 1001 的 ps 输出,并休眠 2 秒,然后再次检查,直到找不到它(进程已退出),此时循环结束并继续执行下一个命令这是关闭。

while [[ $(ps 1001 &> /dev/null)$? -eq 0 ]]; do sleep 2 ;done && shutdown -h now

如果你想确保进程1001是你认为的进程,你可以添加grep来测试,例如如果进程应该是iTunes,你可以这样做:

while [[ $(ps 1001 |grep -q "iTunes" &> /dev/null)$? -eq 0 ]]; do sleep 2 ;done && shutdown -h now

答案2

干得好。经过测试并工作。

while [ 1 ] ; do 
   ps 1001 > /dev/null || { shutdown -h now ; break ; }
   sleep 1
done

答案3

运行以下命令:

while kill -0 1001 &> /dev/null; 
do
   sleep .1
done;
poweroff

使用kill -0不会发送实际信号,但会在给定进程运行时报告 true。重定向&>/dev/null(位桶),因此任何错误或成功消息都不会包含在程序的输出中。这将休眠十分之一秒并检查进程,直到它不再运行,然后执行poweroff.

相关内容