Grep
grep 破壞 systemctl 的格式
如果我在沒有 grep 的情況下呼叫命令 systemctl,則格式看起來正確:
現在我只想過濾帶有 ‘yarn’ 的行,但是這個時間行分為兩部分:
當控制台寬兩倍時也會發生同樣的情況。我怎樣才能解決這個問題?
當
systemctl
’ 的輸出不發送到終端時,例如,如果它通過管道傳輸到grep
,那麼它允許其輸出的每一列盡可能地增長以適應列表中最長的項目。這就是這裡發生的情況:單元列表中的某些單元有一個很長的名稱,並且對齊所有單元的輸出會在yarn.service
和之間產生很大的空間loaded failed failed
。要過濾單元輸出,請使用
systemctl
的內置模式匹配:sudo systemctl list-units '*yarn*'
您可以將輸出限制為
grep
使用該--no-legend
選項獲得的行,避免使用該選項著色和特殊字元--plain
,並避免使用該選項啟動尋呼機--no-pager
:sudo systemctl list-units --plain --no-legend --no-pager '*yarn*'
您可以指定多個模式,結果將包括與任何模式的任何匹配:
sudo systemctl list-units --plain --no-legend --no-pager '*yarn*' '*hdfs*'
如果要檢索特定單元的狀態,有更好的子命令;參見例如測試服務是否在腳本中執行的“正確”方法。