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

相关内容