2013-06-21 53 views
2

我在Oracle Linux上。我有一個shell腳本,可以執行以下操作:Linux中所有打開的gnome終端的列表或名稱

#some stuff happening here 

gnome-terminal --title='my application' -x /path/my_application -param val 

#some more stuff 

現在,腳本很可能會執行多次。但是,我只想要my_application如果它尚未運行就會啓動。我發現下面的代碼是這樣的:

ps cax | grep my_application > /dev/null 
if [ $? -eq 0 ]; then 
    echo "My application already running." 
else 
    gnome-terminal --title='my application' -x /path/my_application -param val 
fi 

這工作正常。這是我遇到問題的地方。我有第二個shell腳本。它也運行my_application,但具有不同的參數。有可能兩個腳本一起執行。如果發生這種情況,必須運行兩個實例my_application,因爲它們具有不同的參數。我的想法是給每個gnome-terminal一個不同的標題,然後在開始my_application之前檢查是否存在具有該標題的gnome終端。

這就是說,我可能會在這個完全錯誤的,所以任何建議,歡迎。

總之,我有兩個腳本都啓動相同的應用程序,但具有不同的參數。這兩個腳本可以一起執行並且每次執行多次。如果給定的腳本啓動了該應用程序,那麼當該腳本再次執行時(假定所述應用程序仍在運行),它不能再次啓動該應用程序。但是,啓動應用程序的一個腳本不得阻止其他腳本啓動相同的應用程序。

回答

2

腳本1:

CMD="gnome-terminal --title='my application' -x /path/my_application -param val" 

flock -n /var/lock/mylock1 $CMD || echo "My application already running." 

腳本2:

CMD="gnome-terminal --title='my application' -x /path/my_application -param val" 

flock -n /var/lock/mylock2 $CMD || echo "My application already running." 
+0

我不知道羊羣,所以感謝。但是,該特定解決方案不起作用。相反,它應該是這樣的:gnome-terminal --title ='我的應用程序'-x flock -n/var/lock/mylock1/path/my_application -param val – PhilBel