In einem CentOS 7-Server möchte ich die Liste der auswählbaren Einheiten abrufen, für die journalctl
Protokolle erstellt werden können. Wie kann ich den folgenden Code ändern, um dies zu erreichen?
journalctl --output=json-pretty | grep -f UNIT | sort -u
Im CentOS 7-Terminal wird der obige Code erzeugt grep: UNIT: No such file or directory
.
BEARBEITEN:
Das folgende Java-Programm wird beendet, ohne dass eine Ausgabe des gewünschten grep gedruckt wird. Wie kann ich die Dinge so ändern, dass das Java-Programm zusätzlich zur Terminal-Version funktioniert?
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
Antworten:
journalctl
kann Protokolle für alle Einheiten anzeigen - ob diese Einheiten in das Protokoll schreiben, ist eine andere Sache.So listen Sie alle verfügbaren Einheiten und damit alle
journalctl
zur Verwendung verfügbaren Einheiten auf:In Bezug auf Ihren Java-Code können Sie, um Pipes zum Laufen zu bringen,
Runtime.exec()
entweder den Befehl in ein Skript einfügen und das Skript aufrufen oder ein String-Array verwenden, etwa:oder:
quelle
list-unit-files
Zeigt keine instanziierten Einheiten und transienten Einheiten an.man journalctl
sagt:So können Sie laufen:
um die Liste der auswählbaren Einheiten abzurufen, für die
journalctl
Protokolle erstellt werden können(standardmäßig nur root und Benutzer , die Mitglieder von einigen speziellen Gruppen sind der Zugriff auf das System gewährt Journal und die Zeitschriften anderer Nutzer. Die Mitglieder der Gruppen
systemd-journal
,adm
undwheel
können alle Journaldateien lesen.)quelle
sudo journalctl --field _SYSTEMD_UNIT
. Aber ansonsten danke und +1 für das Hinzufügen von Einsicht.sudo
können Sie verwenden ,journalctl
aber Sie haben nur eine kleine Liste von Einheiten erhalten , die in direktem Zusammenhang zu Sitzung Ihrer Benutzer.systemd 219
Argumente nicht unterstützt werdenlist-unit-files --all
.