2009-09-14 80 views
1

我在ubuntu中添加了應用程序的快捷方式。每次按快捷鍵時,都會創建一個新的應用程序實例。我只需要一個實例,我可以使用哪些腳本打開應用程序的現有實例,或者在應用程序未運行時創建一個新腳本?Bash腳本 - 運行應用程序的當前或新實例

+0

看看它是否已經在運行,並可選擇點擊Alt + Tab? – 2009-09-14 19:47:51

+0

我使用的應用程序是系統托盤中的簡單字典,不會出現在Alt + Tab中。我經常使用它,所以我在閱讀文章的過程中多次按下快捷鍵,所以我希望它按照快捷鍵快速打開。 – 2009-09-14 19:53:02

回答

3

這很大程度上取決於應用。最簡單的情況是隻能由您(也就是在系統上沒有遺漏任何情況下)來運行,已知的進程名:

pidof applicaton || /usr/bin/application 

打開現有的應用程序可能會變得棘手,並再次,要看應用。我建議你看看alltray thingie,並特別注意alltray --help輸出。

編輯由ypnos: 如果你想限制這只是當前用戶,你應該使用p纖ep代替的pidof,像這樣:

pgrep -u `id -u` application || application 
+0

謝謝,效果很好。 – 2009-09-14 20:05:43

2

您也可以嘗試這樣的腳本:

#! /bin/bash 
user=`id -un` 
lock=/tmp/$user-$1-lock 
if [ -e $lock ]; then 
    exit #app is already running 
fi 

touch $lock 
[email protected] 
rm $lock 

如果你調用的腳本 'runner.sh',你可以使用它像這樣:

runner.sh xcalc 

適用於pidof不起作用的情況。否則去黑客的解決方案,這也是更強大。

+0

腳本也很棒,謝謝。 – 2009-09-14 20:06:55

+0

儘管我瞭解您的腳本,但它確保即使有許多用戶登錄並使用相同的應用程序,只有一個應用程序實例可以在系統範圍內運行? – 2009-09-14 20:13:26

+0

不,鎖文件綁定到用戶,請參閱腳本中的變量$ user。 – ypnos 2009-09-14 20:22:13

相關問題