Grep

grep 破壞 systemctl 的格式

  • August 3, 2020

如果我在沒有 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*'

如果要檢索特定單元的狀態,有更好的子命令;參見例如測試服務是否在腳本中執行的“正確”方法

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