Debian
是否可以在一行上重寫此重啟腳本?
我想知道是否可以在一行上重寫下面的這個腳本?可能與
||
?ps auxw | grep nagios-nrpe-server | grep -v grep > /dev/null if [ $? != 0 ] then /etc/init.d/nagios-nrpe-server start > /dev/null fi
我試過
ps auxw | grep nagios-nrpe-server | grep -v grep > /dev/null || /etc/init.d/nagios-nrpe-server start
了,但它一直在重啟服務,即使它正在執行..
使用
pgrep
:pgrep nrpe > /dev/null || /etc/init.d/nagios-nrpe-server start > /dev/null
或使用子外殼:
(pgrep nrpe || /etc/init.d/nagios-nrpe-server start) > /dev/null
從
pgrep(1)
手冊頁:pgrep 查看目前正在執行的程序並列出與標準輸出匹配的選擇標準的程序 ID。
如果程序名不是
nrpe
,則需要將參數 替換為pgrep
實際程序名。
您需要切換 grep 語句。您要過濾掉的第二條語句
grep
將始終成功,因為它始終存在。所以,首先過濾掉 grep 然後檢查程序:
ps auxw | grep -v grep | grep nrpe > /dev/null || /etc/init.d/nagios-nrpe-server start
根據Debian 軟體包列表,nagios-nrpe-server 的二進製文件剛剛被呼叫
nrpe
,所以我替換了它。