Dies interessiert mich besonders, um die Ausgabe von Oneshot-Diensten zu betrachten, die auf einem Timer ausgeführt werden. Das --unit
Flag ist in der Nähe, verknüpft jedoch alle Ausführungen des Dienstes miteinander. Der naheliegendste Weg, den ich mir vorstellen kann, ist das Filtern nach PID, aber das macht mir Sorgen über die Wiederverwendung / die Dienste von PID, und das Abrufen der letzten PID ist ziemlich unpraktisch. Gibt es eine andere Kennung, die einer einzelnen Ausführung eines Dienstes entspricht und die ich zum Filtern der Protokolle verwenden könnte?
EDIT: Ich würde gerne ein autoritäres "Nein" akzeptieren, wenn das die richtige Antwort ist.
quelle
journalctl --user -u UNITFILE -f -o json-pretty
könnte hilfreich sein; Sie suchen vor allem nachMESSAGE
Feldern. Ich habe herausgefunden, dass Sie möglicherweise auch benötigenUSER_INVOCATION_ID
und dass einigen Nachrichten keine Aufruf-ID zugeordnet ist, sodass sie über diesen Mechanismus nicht gefiltert werden können. IchIch bin nicht sicher, welcher Zeitstempel am sinnvollsten ist, aber das funktioniert für mich. Hoffentlich gibt es eine bessere Möglichkeit, mit den Zeitstempeln von zu arbeiten,
systemctl show
als awk - konnte nicht herausfinden, wie das Format der Zeitstempel gesteuert werden kann.quelle
systemctl show -p ActiveEnterTimestamp thermo.service | awk '{print $2 \" \" $3}'
" -fu thermo.service | wenigersystemctl show -p ActiveEnterTimestamp --value $unit
, so gibt es keine Notwendigkeit für zusätzliche awkSie können das Startflag verwenden, um nur die Protokolle von diesem Start abzurufen. zum Beispiel
quelle
Diese könnten Ihnen helfen:
journalctl -u foo.service | Schwanz -n 2
oder ersetzen Sie 2 durch die erwartete Anzahl von Zeilen
journalctl -u foo.service --since = ' 2016-04-11 13:00:00 '
Sie können sie auch kombinieren, um zuerst den Zeitstempel der letzten Laufzeit abzurufen, und diesen Zeitstempel dann mit der Option --since verwenden.
quelle
Sie können mit Journalctl Feldfilter verwenden. Z.B
Eine Liste aller verfügbaren Felder erhalten Sie mit:
Ein verfügbares Feld ist
_PID
.Mit
pidof
oder können Sie die PID eines laufenden Prozesses ermittelnsystemctl show --property MainPID <SERVICE_NAME>
So erhalte ich die Protokolle aus dem aktuellen Kubernetes-Kubelet-Prozess:
Jetzt sag mir warum ich Kubernetes so schwer zu installieren habe :-(
quelle
journalctl -r | grep -m1 foo.service
quelle