从path获取进程ID

我试图build立一个很好的服务bash脚本为我build立的自定义服务,我的问题是,我需要确定如果进程正在运行武装与文件的唯一path。

从我所有的search引擎中,我find了如何find一个PIDpath的答案,但我需要完全相反。

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

它是这样执行的:python /home/monitor/script.py

有了这个武装,我将如何能够find进程ID,如果它正在运行?

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

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

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

(假设Linux,你可能能够parsing/proc东西 – 但是,不要)

如果您的脚本需要知道它是否已经运行,请在运行时将其写入某个PID。 然后,当它开始查看它是否已经运行时,你的脚本可以在那个地方查看。

这当然假设你不想一次运行多个实例; 如果你这样做,有一个可configuration的path到PID文件,你通过命令行或类似的东西。

一个bash命令来查找python(2.7)进程:

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

你可以从你得到的输出中修改上面的命令。 我在这里得到不同的结果。