Советы по systemd

Анонсировать новости, что тот или иной дистрибутив переходит на systemd, уже неинтересно - понятно, что перейдут все. После перехода основных дистрибутивов, другие будут вынуждены принимать решение, и чем дольше будут колебаться и игнорировать реальность, тем хуже им будет. Некоторые новости про переход на systemd, однако, будут анонсированы. Вот, например, объявили, что якобы кто-то собрался делать Debian без systemd. Если они взлетят, что неочевидно, учитывая квалификацию, навыки организации и работоспособность systemd-хейтеров, то мы обязательно напишем новость об их переходе на systemd - это будет показательно.

В других дистрибутивах systemd уже вовсю используется, и уже появляются некоторые хорошие практики, которыми уже пора начать делиться. Наш коллега, Kevin Fenzi, решил начать делиться накопленными им приемчиками:

  • Чтобы сервис сразу же перезапускался после падений (для чего раньше использовали monit) нужно создать файл в директории /etc/systemd/systemd/myservice.conf.d/ с любым названием, но с расширением .conf, например RestartAlways.conf, и добавить в него следующие строки:

    [Service]
    Restart=always


  • Утилита systemd-delta позволит контролировать такие вот дополнения и изменения в файлах systemd (не изменяйте их в /usr/lib/systemd, а копируйте в /etc/systemd, а уж там изменяйте, например, с помощью скоро появящейся systemctl edit)
  • journalctl --list-boots - выведет список всех перезагрузок системы с их датами (и с номерами, которые можно использовать в следующем совете)
  • journalctl -b N - покажет журнал загрузки номер N (возьмите его из предыдущего совета). Например, -1 и -2 покажут две предыдущих загрузки.
  • systemctl status $PID - утилите можно передать просто Pid, и она покажет статус systemd-юнита, которому принадлежит Pid (спасибо Cgroups!)
  • systemctl suspend -i - игнорировать любые препятствия и ограничители (inhibitors) и остановить. Будьте осторожны, если вы находитесь в середине критичного процесса, например обновления пакетов.
  • systemd-inhibit --list - продемонстрирует все текущие ограничители (inhibitors), и кто их установил.
  • journalctl --disk-usage - сколько дискового пространства занято журналом. Изменить значения можно в /etc/systemd/journald.conf.


А какие у вас любимые трюки с systemd?