Debian

是否可以在一行上重寫此重啟腳本?

  • August 3, 2020

我想知道是否可以在一行上重寫下面的這個腳本?可能與||

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,所以我替換了它。

引用自:https://serverfault.com/questions/1027286