Вики· Обновлено 19 окт. 2026 г.
Шпаргалка: systemd
systemctl и journalctl: сервисы, автозапуск, журнал, свой unit, таймеры вместо cron.
Сервисы
systemctl status nginx
systemctl start | stop | restart | reload nginx
systemctl enable --now nginx # автозапуск и запустить сейчас
systemctl disable --now nginx
systemctl is-active nginx; systemctl is-enabled nginx
systemctl list-units --type=service --state=running
systemctl --failed # что упало
systemctl cat nginx # unit-файл со всеми дополнениями
systemctl show nginx -p MainPID -p MemoryCurrent
systemctl daemon-reload # после правки unit-файлов
Журнал
journalctl -u nginx -f # следить
journalctl -u nginx --since "1 hour ago"
journalctl -u nginx -n 100 --no-pager
journalctl -b -p err # ошибки с последней загрузки
journalctl -b -1 -p err # ...с предыдущей (почему перезагрузился)
journalctl -k | grep -i oom # кого убило ядро по памяти
journalctl --disk-usage
journalctl --vacuum-size=500M # оставить 500 МБ журнала
Свой сервис
/etc/systemd/system/myapp.service:
[Unit]
Description=My app
After=network-online.target
Wants=network-online.target
[Service]
User=myapp
WorkingDirectory=/opt/myapp
EnvironmentFile=/opt/myapp/.env
ExecStart=/opt/myapp/bin/server --port 3000
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
systemctl daemon-reload && systemctl enable --now myapp
Поменять настройку чужого сервиса, не трогая его файл:
systemctl edit nginx # создаст override.conf
# [Service]
# LimitNOFILE=65536
systemctl restart nginx
Таймеры вместо cron
/etc/systemd/system/backup.service:
[Unit]
Description=Nightly backup
[Service]
Type=oneshot
ExecStart=/usr/local/bin/backup.sh
/etc/systemd/system/backup.timer:
[Unit]
Description=Nightly backup timer
[Timer]
OnCalendar=*-*-* 03:30:00
Persistent=true
RandomizedDelaySec=10m
[Install]
WantedBy=timers.target
systemctl daemon-reload && systemctl enable --now backup.timer
systemctl list-timers # когда следующий запуск
systemctl start backup.service # запустить сейчас
systemd-analyze calendar "Mon *-*-* 09:00" # проверить расписание
Система
systemd-analyze blame | head # что тормозит загрузку
hostnamectl set-hostname web-1
timedatectl set-timezone Europe/Moscow
timedatectl set-ntp true
