unable to load pypy library: libpypy-c.so: cannot open shared object file: No such file or directory

С конфигурацией по умолчанию в Debian непривилегированный пользователь не будет иметь доступа ни к журналам systemd-journald, ни к журналам syslog. Если вы вошли в систему как обычный пользователь, вы получите этот ответ от journalctl:

$ journalctl 
No journal files were found.

, что немного сбивает с толку.

Если вы вошли в систему как root, journalctl --unit=yourservice должен предоставить вам информацию, которую вы ищете. После systemctl перезапуска bind9 на моем сервере я получаю это после 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.

Если я убью bind9 явно с помощью kill -9 , journalctl --unit=bind9 дает:

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.

Первая строка указывает, что процесс умер, потому что он был убит.

systemd-journald также пересылает все сообщения журнала в syslog, поэтому вы также должны найти эти сообщения в /var/log/syslog.

Systemd и systemd-journald имеют конфигурацию по умолчанию, скомпилированную в конфигурации, которую можно изменить в /etc/systemd/system.conf и /etc/systemd/journald.conf.

Может быть полезно знать, что по умолчанию systemd-journald хранит журналы в папке /run, то есть tmpfs, и поэтому исчезает после перезагрузки. Это означает, что для того, чтобы получить сообщения журнала старше последней загрузки, вам придется просмотреть файлы системного журнала. В этом случае journalctl не будет давать вам журналы старше последней загрузки. Это можно изменить в /etc/systemd/journald.conf, установив Storage=persistent.

Страницы руководства, которые документируют это:

man 8 systemd-journald
man 5 journald.conf
man 5 systemd-system.conf
man 5 systemd-user.conf

Также обратите внимание, что для автоматического перезапуска службы systemd это должно быть настроено в его файле .service. От 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.
1
14.03.2016, 14:23
0 ответов

Теги

Похожие вопросы