如何获取启动的确切程序的 pid

如何获取启动的确切程序的 pid

所以我有几个python程序说程序A和程序B,当使用“pgrep python”获取pid时,它给了我程序A和程序B的pid。但是,我正在编写一个程序,需要找到程序 B 的 pid,但不是程序 A 的 pid。我的计划是让程序运行控制台命令“pgrep”来获取 pid。然而,由于它获取了两个 pid,并且它无法区分两者之间的区别(我知道)

那么我怎样才能确保我得到程序B的pid而不是程序A呢?

答案1

一种选择是启动程序B的进程可以在执行此操作后检索PID并将其保存在某处的文件中(例如,/var/run/通常包含此类X.pid文件)。一种方法是将程序 B 从脚本启动到后台,然后检查 shell 变量$!,如下所示:

ProgramB &
B_PID=$!

通常,使用此策略,X.pid文件可能会过时——也就是说,启动的进程可能会在X.pid文件未被删除的情况下死亡,并且该 PID 甚至可能被其他进程回收。如果在此期间程序 B 尚未启动,则文件将X.pid不会更新,因此您必须检查文件中存储的 PID 的进程是否X.pid存在,以及该进程是否具有您期望的命令名称。

另一个策略是检查计划 B 启动时所报告的论据。您可以获得pspgrep向您提供该信息。正如评论者所说,使用的标志pgrep-f.

相关内容