Answers:
反复杀死一个进程的问题是,在创建新进程时出现了竞争状况。不太可能,但是您可能会在退出睡眠状态时退出该进程,并使用相同的PID启动新进程。
您为什么要反复取消该过程?如果是因为该过程将退出,但是在收到信号后可能需要一些时间才能退出,则可以使用wait
:
kill $PID
wait $PID
在理想的系统中,您无需重复a kill
或issue kill -9 $PID
。如果必须这样做,则可能要考虑修复正在运行的内容,因此不必这样做。同时,您可能不会遇到竞争状况,并且可以通过(例如)在终止进程之前检查/ proc / $ PID /的时间戳来防止出现竞争状况。但是,那是很糟糕的技巧。
bash: wait: pid 32137 is not a child of this shell
尝试的时候知道了。:(
对于每个建议从此kill $PID
开始的人kill -9 $PID
,我都必须提醒您使用kill -9没用。
不不不。不要使用kill -9。
它并没有给过程一个干净的机会:
关闭插座连接
清理临时文件
通知其孩子它要消失了
重置其终端特性
等等,依此类推。
通常,发送15,然后等待一两秒钟,如果不起作用,则发送2,如果不起作用,则发送1。如果不起作用,请删除二进制文件,因为程序的行为不当!
不要使用kill -9。不要带出联合收割机只是为了整理花盆。
现在,我不同意“删除二进制文件的一部分”,但是该进展似乎不仅仅只是一个kill -9
。
我也同意在此处提到的具有相同PID的新进程的创建中关注竞争条件。
首先执行正常的杀死操作,“睡眠” x秒数,然后如果仍然存在,则杀死-9。另外,这似乎是您遇到的奇怪情况,可能想向我们解释更大的问题。
ps -ef
吗