systemd: юниты, таймеры и логи journalctl

systemd — стандартный менеджер служб в большинстве дистрибутивов. Понимание его возможностей позволяет автоматизировать задачи, управлять службами и эффективно читать логи.

Управление службами

systemctl status nginx
systemctl start nginx
systemctl enable nginx
systemctl restart nginx
systemctl disable nginx

Проверить, почему служба не стартует: systemctl status и journalctl -u nginx -e.

Создание собственного юнита

[Unit]
Description=My backup script
After=network-online.target

[Service]
Type=oneshot
ExecStart=/usr/local/bin/backup.sh

[Install]
WantedBy=multi-user.target

Сохраните в /etc/systemd/system/backup.service, затем systemctl daemon-reload && systemctl enable --now backup.service.

Таймеры вместо cron

[Unit]
Description=Daily backup timer

[Timer]
OnCalendar=*-*-* 02:00:00
Persistent=true

[Install]
WantedBy=timers.target

Таймеры systemd лучше cron: поддерживают зависимости, логирование и пропущенные запуски (Persistent).

Работа с journalctl

journalctl -b          # логи текущей загрузки
journalctl -u ssh -f   # следить за службой
journalctl --since "1 hour ago"
journalctl -p err -b   # только ошибки
journalctl --disk-usage

Ограничьте размер журнала в /etc/systemd/journald.conf: SystemMaxUse=500M. Это предотвратит заполнение диска.

Насколько публикация полезна?

Нажмите на звезду, чтобы оценить!

Средняя оценка 0 / 5. Количество оценок: 0

Оценок пока нет. Поставьте оценку первым.