我有一个进程在 PID 20371 ( nohup python test.py
) 上运行,执行大约需要 10 个小时,nohup
当这个命令完成时我如何运行另一个命令。即进程现在正在运行我想发出一个命令,以便虚拟机在完成后将自动使用
如果您仍然可以访问启动该nohup
进程的 shell,则可以使用wait
内置命令。要在进程完成后运行某些内容,您可以执行以下操作:
wait 20371 && newCommand
如果您无权访问父 shell,则不能使用wait
,因此需要不同的方法:
while kill -0 20371; do sleep 2; done && newCommand
这将运行一个循环,该循环将检查具有该 PID 的命令是否仍在每两秒运行一次。如果不是,它将启动下一个命令。
重要提示:无法 100% 保证这将是正确的过程。有可能(尽管不太可能)该进程可能会完成,并且它的 PID 在一次检查和下一次检查之间被另一个进程重用。
对于所有这些,一种更好的方法,您应该习惯的方法,是使用解复用器screen
或tmux
连接到您的服务器并在该会话中运行命令。这样,nohup
即使您注销,您的命令也将继续运行。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句