Services
如果存在返回狀態,如何檢查服務的存在,否則 -1
我需要一行 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
。