Com a configuração padrão no Debian, um usuário sem privilégios não terá acesso ao log do systemd-journald, nem ao log do syslog. Se logado como usuário normal, você receberá esta resposta do journalctl:
$ journalctl
No journal files were found.
que é um pouco confuso.
Se você estiver logado como root, journalctl --unit=yourservice
deve fornecer as informações que você está procurando. Depois de um systemctl restart bind9
no meu servidor, recebo isso depois de journalctl --unit=bind9
:
Jun 03 18:20:24 ns systemd[1]: Stopping BIND Domain Name Server...
Jun 03 18:20:24 ns named[27605]: received control channel command 'stop'
Jun 03 18:20:24 ns systemd[1]: Starting BIND Domain Name Server...
Jun 03 18:20:24 ns systemd[1]: Started BIND Domain Name Server.
Se eu matar bind9 explicitamente com kill -9
, journalctl --unit=bind9
dará:
Jun 03 18:46:25 ns systemd[1]: bind9.service: main process exited, code=killed, status=9/KILL
Jun 03 18:46:25 ns rndc[28028]: rndc: connect failed: 127.0.0.1#953: connection refused
Jun 03 18:46:25 ns systemd[1]: bind9.service: control process exited, code=exited status=1
Jun 03 18:46:25 ns systemd[1]: Unit bind9.service entered failed state.
Jun 03 18:46:25 ns systemd[1]: bind9.service holdoff time over, scheduling restart.
Jun 03 18:46:25 ns systemd[1]: Stopping BIND Domain Name Server...
Jun 03 18:46:25 ns systemd[1]: Starting BIND Domain Name Server...
Jun 03 18:46:25 ns systemd[1]: Started BIND Domain Name Server.
A primeira linha indica que o processo morreu porque foi morto.
systemd-journald também encaminha todas as mensagens de log para o syslog, então você também deve encontrar essas mensagens em /var/log/syslog
.
O Systemd e o systemd-journald têm um padrão compilado na configuração que pode ser alterado em /etc/systemd/system.conf
e /etc/systemd/journald.conf
.
Pode ser útil saber que, por padrão, o systemd-journald armazena os logs em /run
, que é tmpfs
e, portanto, desaparece após a reinicialização. Isso significa que, para obter mensagens de log mais antigas que a última inicialização, você terá que examinar os arquivos syslog. Neste caso, o journalctl não lhe dará logs mais antigos que a última inicialização. Isso pode ser alterado em /etc/systemd/journald.conf
, definindo Storage=persistent
.
As páginas de manual que documentam isso são:
man 8 systemd-journald
man 5 journald.conf
man 5 systemd-system.conf
man 5 systemd-user.conf
Observe também que, para que um serviço seja reiniciado automaticamente pelo systemd, isso deve ser configurado em seu arquivo .service
. De man 5 systemd.service
:
Restart=
Configures whether the service shall be
restarted when the service process exits, is
killed, or a timeout is reached. The service
process may be the main service process, but it
may also be one of the processes specified with
ExecStartPre=, ExecStartPost=, ExecStop=,
ExecStopPost=, or ExecReload=. When the death
of the process is a result of systemd operation
(e.g. service stop or restart), the service
will not be restarted. Timeouts include missing
the watchdog "keep-alive ping" deadline and a
service start, reload, and stop operation
timeouts.
Takes one of no, on-success, on-failure,
on-abnormal, on-watchdog, on-abort, or always.
If set to no (the default), the service will
not be restarted.