
Tenho alguns servidores Linux, todos executando serviços diferentes. Quando executo service --status-all
, recebo algumas telas de saída. Achei que seria inteligente e canalizá-lo para sort
, e ver como um grupo quais serviços foram iniciados, não iniciados ou desconhecidos. Executei o comando, mas ele apenas classificou as [ ? ]
entradas na parte superior, e todas as [ - ]
entradas [ + ]
e estão agrupadas em uma bagunça!
O comando que usei foi service --status-all | sort
. Existe uma maneira melhor de classificar também os sinais de mais e menos?
Isto é especificamente em uma caixa Debian, executando apenas a linha de comando
Responder1
Parece que service --status-all
grava os resultados [ + ]
e [ - ]
em stdout, mas os [ ? ]
resultados em stderr. Portanto, para sort
classificar todos eles, você terá que combinar os fluxos stdout e stderr assim:
service --status-all 2>&1 | sort
A classificação é afetada pelo valor de LC_COLLATE
, que por padrão é igual à sua LANG
configuração. Se você não deseja alterar o valor de LC_COLLATE
todos os seus aplicativos, mas deseja que esta lista seja classificada por e +
, use este comando:-
?
service --status-all 2>&1 | LC_COLLATE=C sort
Para configurar LC_COLLATE
todos os seus aplicativos, coloque isso em seu script ~/.profile
, ~/.bash_profile
ou qualquer outro script de origem para configurar seu ambiente no login:
export LC_COLLATE=C