Since systemd
version 232
, we have the concept of invocation ID. Each time a unit is ran, it has a unique 128 bit invocation ID. Unlike MainPID
which can be recycled, or ActiveEnterTimestamp
which can have resolution troubles, it is a failsafe way to get all the log of a particular systemd unit invocation.
To obtain the latest invocation ID of a unit
$ systemctl show --value -p InvocationID openipmi
bd3eb84c3aa74169a3dcad2af183885b
To obtain the journal of the latest invocation of, say, openipmi
, whether it failed or not, you can use the one liner
$ journalctl _SYSTEMD_INVOCATION_ID=`systemctl show -p InvocationID --value openipmi.service`
-- Logs begin at Thu 2018-07-26 12:09:57 IDT, end at Mon 2019-07-08 01:32:50 IDT. --
Jun 21 13:03:13 build03.lbits openipmi[1552]: * Starting ipmi drivers
Jun 21 13:03:13 build03.lbits openipmi[1552]: ...fail!
Jun 21 13:03:13 build03.lbits openipmi[1552]: ...done.
(Note that the --value
is available since systemd 230
, older than InvocationID
)