Bash
如果應用程序正在執行,如何檢查 Bash 腳本?
我的主文件夾中有一個執行 gnome 的應用程序。我現在已經添加了當我按下
Meta
+時要執行的應用程序R
(我在CCSM中添加了它)。./gnome-run
我通過在我的主文件夾中執行來執行應用程序。我在
ps -A
.問題是,如果我打開了 gnome-run 程序並按下組合鍵,我希望應用程序關閉。有沒有辦法創建一個 bash 文件來檢查應用程序是否正在執行?如果是則關閉它,否則啟動它。
這個 shell 腳本應該處理任何程序的啟動和停止:
#!/bin/bash BASECMD=${1%%\ *} PID=$(pgrep "$BASECMD") if [ "$?" -eq "0" ]; then echo "at least one instance of "$BASECMD" found, killing all instances" kill $PID else echo "no running instances of "$BASECMD" found, starting one" $1 fi
假設您將其保存在 下
~/mystarter
,您可以使用它執行任何命令~/mystarter <name>
,例如,在您的情況下,將Meta
+綁定R
到:~/mystarter gnome-run
並確保腳本是可執行的:
chmod u+x ~/mystarter
. 此外,最好將它放在您的某個PATH
位置,這樣您就不必每次都輸入它的完整位置。至於
gnome-run
沒有出現在 中的事實,請ps -A
確保 gnome run 本身不是啟動實際程序的腳本。ps -A | wc -l
檢查啟動之前和之後是否存在差異(這會計算所有正在執行的程序)。編輯:
既然您已經接受了答案,我想我會添加對執行具有命令行參數的命令的支持,以便這可能成為參考的地方。像這樣執行命令:
./mystarter 'cmd args'
例如:
./mystarter 'ncmpcpp -c ~/.ncmpcpp'
該命令只是
ncmpcpp
查看它是否已經在執行,但在ncmpcpp
未執行時執行完整的命令(帶參數)。