Linux 中的排序服務

Linux 中的排序服務

我有幾台 Linux 伺服器,都運行不同的服務。當我運行時service --status-all,我會得到幾個螢幕的輸出。我想我會很聰明,將其通過管道傳輸到sort,並作為一個群組查看哪些服務已啟動、未啟動或未知。我執行了該命令,但它只對[ ? ]頂部的條目進行了排序,所有的[ - ][ + ]條目都亂七八糟地聚集在一起!

我使用的命令是service --status-all | sort.有沒有更好的方法來對加號和減號進行排序?

這是專門在 Debian 機器上運行的,僅運行命令行

答案1

似乎將和結果service --status-all寫入stdout,但將結果寫入 stderr。因此,要用於對所有這些進行排序,您必須將 stdout 和 stderr 流組合起來,如下所示:[ + ][ - ][ ? ]sort

service --status-all 2>&1 | sort

排序受 值的影響LC_COLLATE,預設與您的設定相同LANG。如果您不想更改LC_COLLATE所有應用程式的值,但確實希望此列表按+-和排序?,請改用以下命令:

service --status-all 2>&1 | LC_COLLATE=C sort

若要為所有應用程式進行設置LC_COLLATE,請將其放入您的~/.profile~/.bash_profile或任何來源的腳本中以在登入時設置您的環境:

export LC_COLLATE=C

相關內容