
是否可以在終端機中輸入某些內容,以便在某個程式正在執行時它會執行命令?例如,if <Libre office is running> then sudo pkill <Libre ofice>
。
編輯1:所以我想做的是在終端機中建立一個 if 語句,如果程式正在運行,則該語句運行,如果沒有運行,則不執行任何操作,或者執行其他操作。
答案1
“我想做的是在終端機中創建一個 if 語句,如果程式正在運行,則該語句運行;如果沒有運行,則不執行任何操作,或者執行其他操作”
要確定程式是否正在運行給定其名稱,請使用pgrep
.如果 LibreOffice 的文字處理器正在運行,請執行以下操作:
pgrep soffice.bin >/dev/null && do_something
同樣,如果 LibreOffice 的文字處理器是不是跑步:
pgrep soffice.bin >/dev/null || do_something
此外,您可以結合這兩者:
pgrep soffice.bin && do_one_thing || do_another
或者,如果事情變得更複雜,請使用以下if
語句:
if pgrep soffice.bin
then
# command is running
do_one_thing
do_one_thing2
else
# command is not running
do_another
do_another2
fi
上面的工作是因為pgrep
,就像 一樣grep
,設定了一個有用的退出代碼。如果找到進程,它將返回退出代碼為零(shell 將其解釋為邏輯真)。如果不是,則傳回 1(shell 將任何非零退出代碼解釋為 false)。
若要找出目前正在執行的所有程式(以及使用什麼名稱作為 的參數pgrep
),請執行ps ax