从路径获取进程 ID

从路径获取进程 ID

我正在尝试为自己构建的自定义服务构建一个不错的服务 bash 脚本,我的问题是我需要仅根据文件路径来确定进程是否正在运行。

通过所有的谷歌搜索,我找到了如何找到 PID 路径的答案,但我需要完全相反的答案。

假设我的可执行文件位于 /home/monitor/script.py

它的执行方式如下:python /home/monitor/script.py

有了这个,我怎样才能找到正在运行的进程 ID?

答案1

尝试使用 ps 按名称查找脚本:

ps -f -C python | grep /home/monitor/script.py

-C 标志告诉 ps 列出名为“python”的进程,-f 提供包括命令行在内的“完整”输出,而 grep 则挑选出正确的 python 进程。pid 是行中的第二个字段。

答案2

(假设使用 Linux,你也许能够解析出一些东西/proc- 但是,不要这样做)

如果您的脚本需要知道它是否已在运行,请让它在运行时将 PID 写入某处。然后,您的脚本可以在启动时查看该位置以查看它是否已在运行。

当然,这假设您不想同时运行多个实例;如果这样做,请在命令行上传递一个可配置的 PID 文件路径,或类似的东西。

答案3

用于找出 python(2.7) 进程的 bash 命令:

$ lsof | awk '$9 ~ /^\/usr\/lib\/python2\.7/ {print $0}'

您可以从获得的输出中修改上述命令。我在这里得到了不同的结果。

相关内容