Journalctlのオプション単位のリスト

Journalctlのオプション単位のリスト

CentOS 7サーバーでログを生成できるオプションのデバイスのリストを取得したいですjournalctl。これを達成するために、次のコードをどのように変更できますか?

journalctl --output=json-pretty | grep -f UNIT | sort -u  

CentOS 7端末では、上記のコードはgrep: UNIT: No such file or directory

編集する:

次のJavaプログラムは、必要なgrepの出力を印刷せずに終了します。ターミナルバージョンに加えてJavaプログラムを動作させるにはどうすればよいですか?

    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) {}  

ベストアンサー1

journalctlすべてのデバイスのログが表示されることがあります。そのデバイスがログに書き込まれるかどうかは別の問題です。

利用可能なすべてのユニットと利用可能なすべてのユニットを一覧表示しますjournalctl

systemctl list-unit-files --all

Javaコードの場合、パイプを機能させるにはRuntime.exec()コマンドをスクリプトに入れてスクリプトを呼び出すか、文字列配列を使用できます。たとえば、次のようになります。

String[] cmd = {"sh", "-c", "command1 | command2 | command3"};
p = Runtime.getRuntime().exec(cmd);

または:

Runtime.getRuntime().exec(new String[]{"sh", "-c", "command1 | command2 | command3"});

おすすめ記事