Базовый набор команд
bash
systemctl status nginx # текущее состояние unit'а + последние логи
sudo systemctl start nginx # запустить
sudo systemctl stop nginx # остановить (graceful: SIGTERM → SIGKILL через TimeoutStopSec)
sudo systemctl restart nginx # = stop + start
sudo systemctl reload nginx # послать [[signals]] SIGHUP - перечитать конфиг без перезапуска
sudo systemctl enable nginx # запускать при старте системы
sudo systemctl disable nginx # не запускать при старте
sudo systemctl enable --now nginx # enable + start одной командой
Просмотр
bash
systemctl # все loaded и active unit'ы
systemctl list-units --type=service # только сервисы
systemctl list-units --state=failed # упавшие
systemctl list-unit-files # все известные unit'ы (включая disabled)
systemctl is-active nginx # active / inactive / failed (для скриптов)
systemctl is-enabled nginx # enabled / disabled
Дерево cgroup'ов
bash
systemctl status nginx # внизу - Tasks, Memory, CPU, и cgroup-путь
systemd-cgtop # top-style вид по [[cgroups]]
systemd-cgls # дерево cgroup'ов
Где лежат unit-файлы
/etc/systemd/system/- твои локальные / dropin'ы (приоритет)/lib/systemd/system/или/usr/lib/systemd/system/- от пакетов
После редактирования:
bash
sudo systemctl daemon-reload # перечитать unit-файлы
sudo systemctl restart <unit> # применить изменения
Override без правки оригинала
bash
sudo systemctl edit nginx
▸откроет редактор для drop-in: /etc/systemd/system/nginx.service.d/override.conf
▸ту же [Service]-секцию можно переопределить точечно
Это правильный путь - оригинальный unit пакета не трогаем.
Остальные подкоманды
bash
systemctl list-timers # активные timer'ы (cron-replacement)
systemctl reboot / poweroff # перезагрузка / выключение
systemctl --user start foo # user-level systemd (per-user)
systemctl mask <unit> # запретить ВООБЩЕ (даже зависимостями)
Связка с journalctl
Логи - отдельный бинарь cmd-journalctl:
bash
journalctl -u nginx -f # tail логов конкретного unit'а
journalctl -u nginx --since today