Systemd-Timer: Letzte Ausführung im 8601-Format abrufen

386
user3549596

Ist es möglich, die letzte Ausführungszeit von einem Systemd-Timer abzurufen?

Beispiel:

systemctl list-timers dnf-automatic.timer NEXT LEFT LAST PASSED UNIT ACTIVATES Wed 2017-04-12 08:02:56 CEST 21h left Mon 2017-04-10 15:49:27 CEST 18h ago dnf-automatic.timer dnf-automatic.service 

Gibt es einen Befehl, der die LASTSpalte im ISO8601-Format drucken würde ? Oder muss ich den harten Weg gehen?

1

1 Antwort auf die Frage

1
Tim Landscheidt

Alle systemdEigenschaften der Einheiten können abgefragt werden durch:

systemctl show $unit 

Einzelne Eigenschaften können abgefragt werden durch:

systemctl show $unit -p $property --value 

Technisch ist dies keine Antwort auf Ihre Frage, da Timer nicht "ausgeführt" werden, aber wenn Sie sich die Einheit ansehen möchten, auf die sich der Timer bezieht, können Sie die letzte "Startzeit" mit abfragen:

systemctl show $unit -p ExecMainStartTimestamp --value 

und seine letzte "Stopp" -Zeit mit:

systemctl show $unit -p ExecMainExitTimestamp --value 

Diese erzeugen Ausgaben in Form von So 2017-04-16 19:19:12 UTC(auf meinem System für mein Gebietsschema), die weder ISO 8601 sind noch an (GNU) anpassbar sind date. Wenn Sie jedoch LC_TIMEbeim Aufruf auf setzen C, können Sie die Daten weiter verarbeiten (vorausgesetzt, Sie verwenden GNU dateoder ein ähnliches Werkzeug):

date --date="$(LC_TIME=C systemctl show $unit -p ExecMainExitTimestamp --value)" -I 

Dies wird (zum Beispiel) zurückkehren 2017-04-16.

Vor Version 230 wurde systemdkeine --valueOption bereitgestellt. Stattdessen wurde der Eigenschaftswert zurückgegeben, dem der Eigenschaftsname und ein Gleichheitszeichen vorangestellt waren. In diesem Fall müssen Sie den Wert der Eigenschaft selbst aus den Daten extrahieren, zum Beispiel mit sed:

date --date="$(LC_TIME=C systemctl show $unit -p ExecMainExitTimestamp | sed -e 's/^[^=]\+=//;')" -I 
Danke, aber "--value" scheint nicht zu funktionieren. "nicht erkannte Option" `systemd 229` user3549596 vor 7 Jahren 0
Ich habe Code für `systemd` <230 hinzugefügt, der keine Option --value` hatte (vgl. Https://github.com/systemd/systemd/blob/master/NEWS). Tim Landscheidt vor 7 Jahren 0