我想看看是否有某个 python 进程正在运行。我已经设置了一个更新 noip 的 python 脚本,并且 cron 每 1 分钟运行一次,但它只需要 2 秒就可以运行并完成,所以我想知道是否有办法执行 ps -e | grep python 并等到屏幕上出现某个 python 进程
答案1
如果你的目标只是观察过程的出现,那么你可以这样做:
watch -n1 "ps -ef | grep command | grep -v grep"
就我个人而言,我经常使用轮询技术pgrep
和while
循环,如下所示:
while ! pgrep -f command ; do true; done && echo "Process started"
如果您想在进程出现或消失时运行附加命令,这是一个很好的方法。
测试运行:
其工作方式非常简单:
- loop
pgrep -f command
在每次迭代时运行并否定其退出状态。因此,如果未找到进程,则退出状态将1
否定为0
,从而保持循环运行。 - 一旦出现该进程,退出状态就变成
0
,它被否定为1
,导致 for 循环终止并显示消息echo
这是一种非常通用的方法,适用于任何 shell 和脚本语言。例如,我在检测ip变化的python脚本和当进程出现时运行命令的脚本