bash 子进程 (imapsync) 的 PID - 如何获取它?

bash 子进程 (imapsync) 的 PID - 如何获取它?

谁能告诉我如何获取在 bash 中执行的命令的 PID。

例如,我有一个运行 imapsync 的 bash 脚本。

当脚本被终止时,imapsync 进程并不总是被终止,所以我希望能够从我的脚本中以编程方式识别 imapsync 的 PID,以便我可以在信号处理程序中自己终止 imapsync 进程。

那么,如何以编程方式从父 bash 脚本获取子进程的 PID?

答案1

imapsync 有一个选项可以设置其 pid 的写入位置:

--pidfile :写入 imapsync pid 的文件。

答案2

any_command args &
my_child_PID=$!

换句话说,就像$$保存你的 PID 一样,$!拥有最近执行的后台命令

答案3

与 不同pidofpgrep可以给出各种选项来限制它返回哪些进程的 PID。一个可能特别有用的选项是使用当前进程的 PID 根据 PPID 进行选择。

pgrep -P $$ imapsync

如果 imapsync 是你的脚本的子项,则它只会输出 imapsync 的 PID。

答案4

如何将 imapsync 暂时放在后台,获取 PID,然后将其置于前台......就像这样:

imapsync &
pid=$!
wait $pid
retVal=$?

相关内容