Services

如果存在返回狀態,如何檢查服務的存在,否則 -1

  • November 18, 2018

我需要一行 sh 命令來檢查服務是否存在然後返回服務狀態,否則返回-1。

我想出了以下內容:

[mon@monitoring ~]# if service --status-all | grep sssd >/dev/null ;then service sssd status > /dev/null; echo $? ;else echo "-1";fi
dnsdomainname: Unknown host
3

我需要擺脫嘈雜的輸出並留下數字。無法確定這是從哪裡來的。

程序有兩個輸出:一個呼叫stdout 正常消息,一個呼叫stderr輸出錯誤消息。

如果您想擺脫錯誤消息以及其他錯誤消息,您應該重定向stderr/dev/null.

if service --status-all | grep sssd >/dev/null ;then service sssd status > /dev/null 2>&1; echo $? ;else echo "-1";fi

2>&1重定向stderr到同一個地方比stdout

編輯:

事實上,OP 問題中不受歡迎的輸出來自service --status-all. 所以 :

if service --status-all 2>/dev/null | grep sssd >/dev/null ;then service sssd status > /dev/null 2>&1; echo $? ;else echo "-1";fi

預設情況下,管道僅重定向stdout

引用自:https://unix.stackexchange.com/questions/118071