我试图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}'
你可以从你得到的输出中修改上面的命令。 我在这里得到不同的结果。