Em um servidor CentOS 7, desejo obter a lista de unidades selecionáveis para as quais journalctl
podem produzir logs. Como posso alterar o código a seguir para fazer isso?
journalctl --output=json-pretty | grep -f UNIT | sort -u
No terminal CentOS 7, o código acima é produzido grep: UNIT: No such file or directory
.
EDITAR:
O programa java a seguir está sendo finalizado sem imprimir nenhuma saída do grep desejado. Como posso mudar as coisas para que o programa java funcione além da versão do terminal?
String s;
Process p;
String[] cmd = {"journalctl --output=json-pretty ","grep UNIT ","sort -u"};
try {
p = Runtime.getRuntime().exec(cmd);
BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream()));
while ((s = br.readLine()) != null)
System.out.println("line: " + s);
p.waitFor();
System.out.println ("exit: " + p.exitValue()+", "+p.getErrorStream());
BufferedReader br2 = new BufferedReader(new InputStreamReader(p.getErrorStream()));
while ((s = br2.readLine()) != null)
System.out.println("error line: " + s);
p.waitFor();
p.destroy();
} catch (Exception e) {}
grep -F
Respostas:
journalctl
pode exibir logs para todas as unidades - se essas unidades gravam no log é uma questão diferente.Para listar todas as unidades disponíveis e, portanto, todas disponíveis para
journalctl
uso:Quanto ao seu código java, para fazer com que os pipes funcionem,
Runtime.exec()
você pode colocar o comando em um script e invocar o script ou usar uma matriz de strings, algo como:ou:
fonte
list-unit-files
não mostra unidades instanciadas e unidades transitórias.man journalctl
diz:Então, você pode executar:
para obter a lista de unidades selecionáveis para as quais
journalctl
podem produzir logs(por padrão, somente o root e os usuários que são membros de alguns grupos especiais têm acesso ao diário do sistema e os diários de outros usuários. Os membros dos grupos
systemd-journal
,adm
ewheel
pode ler todos os arquivos de diário.)fonte
sudo journalctl --field _SYSTEMD_UNIT
. Caso contrário, agradeço e +1 por adicionar informações.sudo
você pode usar,journalctl
mas você só recebe uma pequena lista de unidades diretamente relacionadas à sessão do usuário.systemd 219
não suporta os argumentoslist-unit-files --all
fornecidos na resposta atualmente aceita.