linux - 如何确定脚本是否作为 nohup 完成运行?

标签 linux unix shell background-process

我尝试使用类似 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/

相关文章:

c - 读取循环内的停止信号

linux - 具有三重管道和 key 文件的 GPG

linux - 在 bash 中多次调用 getopts

linux - 列出用户 Asterisk 的用户名和 SIP 号码

linux - 中间按钮在 Sublime 3 中粘贴已删除的文本

linux - NASM scanf 未定义引用 (LINUX)

linux - 用于启动 Chromium 的 Bash 脚本,休眠 20 秒,然后安静地关闭

linux - 如何将目录中所有文件的列表添加到文本文件中?

c - C 中的 unicode 字符串比较

linux - 在线 Linux Bash 演示