我尝试使用类似 nohup 的方式运行脚本,
nohup script.sh &
当我尝试过
ps -ef | grep "script.sh"
除了以该字符串作为参数运行的 grep 之外,我在那里找不到它。
我做的对吗?这是否意味着该进程确实已经执行完毕? 谢谢。
最佳答案
在您的 shell 脚本的开头,将 PID 写入文件(例如,在/var/run 中)。然后,您只需搜索该 PID 即可了解该过程是否已完成。您可以使用内置的 $$
变量获取 shell 脚本的 PID。
要记录 PID,请放在脚本的顶部:
echo $$ > /var/run/myscript.pid
然后,检查它是否仍在运行:
ps -p `cat /var/run/myscript.pid`
您可能无法以普通用户身份写入 /var/run
。如果没有,只需使用 /tmp
关于linux - 如何确定脚本是否作为 nohup 完成运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2944004/