2014-01-07 18 views
0

我有多个脚本正在运行。所有的脚本都有相同的名字,但是他们执行的命令做了不同的事情。检查进程是否运行linux并从某些描述开始

我想弄清楚如果脚本的特定实例正在运行,如果是的话我不想它再次运行。这很难,因为所有脚本都有相同的名称,所以使用pgrep可能会导致误报。

我的想法是,如果有,当它第一次运行时,我可以附加任何属性或描述,然后我可以grep为独特的描述,并告诉其实例正在运行,有没有办法做到这一点? 有没有人有任何其他的想法?

谢谢

+0

使用'lsof的-p '找出哪些过程是什么。然后将您的脚本重命名为有意义的。 – twalberg

+0

“给你的脚本更有意义的名字”的建议是一个很好的建议;否则,你可以在你的问题中详细说明为什么它们都被命名为同一事物,因为该决定背后的推理可能会阐明如何解决该决策所产生的下游问题的建议。 – TML

回答

0

您可以实现下面的逻辑来检查天气脚本是否已经运行或不运行。

if [ -f Script1.lck ];then 

     echo "ALREADY INSTANCE RUNNING `date`" 
     echo "EXITING" 
else 
     echo "NO INSTANCE RUNNING " 
     touch Script1.lck 
     #Your Script code here............. 
     rm -f Script1.lck 
fi 

*我使用的概念是,如果文件不存在,则它每次运行对Script1.lck文件的检查,这意味着没有实例正在运行。所以它会创建文件并开始执行您的代码。 假设在执行该脚本之间,它会检查.lck文件,并且由于以前的实例和.lck已经存在。

*在最后我删除了.LCK文件。

*通过使用不同的LCK文件名不同的脚本,您可以检查哪些脚本运行。

相关问题