我有几个 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