2014-01-07 17 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文件名不同的腳本,您可以檢查哪些腳本運行。

相關問題