从 Bash 脚本手动编写 PID 文件

从 Bash 脚本手动编写 PID 文件

我怎样才能编写一个 Bash 脚本来运行一个长时间运行的程序并将程序进程 ID 存储在单独的文件中?

我想要类似的东西

#!/bin/bash
exec long_running_tool
echo `ps af |grep "long_running_tool" |awk '$5 == "long_running_tool" {print $1}'` > pid_file

然而,这样做会执行ps后续操作工具已完成。

有没有办法获取所创建进程的进程 ID?

答案1

您可以轻松地使用“&”在后台运行该进程,然后使用“$!”获取后台进程的 PID。

#!/bin/bash
long_running_tool &
echo $! > pid_file

然后,如果您希望 shell 阻塞直到进程完成执行,则可以选择等待 $!。

答案2

#!/bin/bash
echo $$ > fooapp.pid
exec fooapp

如前面提到的,exec 取代 bash使用指定的程序,保留PID。

相关内容