启动时将子进程的 PID 回显到文件 - bash

启动时将子进程的 PID 回显到文件 - bash

我想知道是否有办法启动子进程(而不是作为后台进程),并获取其 PID,并可能将其输出到文件。

我正在 bash 脚本中启动一个进程,即 java,我希望能够将此 java 进程的 PID 输出到文件,以便我可以在其他脚本中使用它。问题是我没有将 java 作为后台进程启动,所以我不能使用。$!关于如何将我刚刚启动的进程的 PID 输出java到文件,有什么想法吗?

请注意,这个 java 进程不会是系统上运行的唯一 java 进程 - 如果我让它工作,我会将不同 java 进程的子进程输出到不同的文件。

我唯一想到的是在启动 java 之前启动一个知道当前 bash 脚本 PID 的后台进程。然后使用该后台进程从 bash 脚本中查找子进程。不过我不知道如何实现这一点。

答案1

最好的解决方案可能是让应用程序本身执行此操作。如果那不是一个选项,请尝试将应用程序包装在 shell 脚本中:

#!/bin/sh
echo My pid is $$.
exec /the/real/path/to/the/app

关键是exec命令,它使 shell(处理脚本的进程)运行最后一个程序无分叉,因此它(应用程序)接管进程并继承其PID。

相关内容