Сразу к делу: чтобы перезапустить конкретный процесс, используй команду systemctl restart имя. Не нужно ничего выдумывать – эта строка должна быть в твоём мозговом кэше. И не путай её с reload. Первая убивает и запускает заново, вторая лишь отправляет сигнал HUP, и не каждый демон на него реагирует.
Хочешь посмотреть статус? systemctl status postfix. Только не верь зелёному цвету. Если висит, но не работает – статус покажет ACTIVE. Вот почему всегда проверяй журнал: journalctl -u postfix. Не будь наивным. Всё, что не в журнале – не существует.
Отключить автозапуск: systemctl disable имя. Удаляет симлинк из /etc/systemd/system/multi-user.target.wants/. Это важно понимать. Ты не просто выключаешь флажок, ты физически убираешь файл. Это Red OS, тут всё буквально.
Важно! Не трогай
mask, если не понимаешь, что делаешь. Это не просто блокировка, это выстрел в колено. Возврата нет без ручной правки symlink’ов.
Проверка на включение: systemctl is-enabled имя. Если получаешь disabled, но оно всё равно запускается – проверь таймеры и зависимости. Да, это может быть .timer, а может быть Wants= в другом юните.
Внимание: systemctl list-units --type=service не покажет выключенные. Для полного списка – systemctl list-unit-files. Не перепутай. Это две разные реальности.
Запуск от имени пользователя: systemctl --user start имя. Только если логин-сессия активна. Нет GUI? Нет запуска. На сервере с sssd – отдельная боль. Лови сессию через loginctl, и не забудь про enable-linger.
Важно помнить: перезагрузка не всегда сбрасывает всё. Проверь остаточные процессы. Используй
ps aux | grep имя, а не верь systemd вслепую.
Хочешь свой unit-файл? Кидай его в /etc/systemd/system/. Только не забывай: daemon-reload обязателен. Без него systemd даже не заметит файл. Это не шутка, это архитектура.
Надо отладить зависимость? systemd-analyze blame и systemctl list-dependencies. Если не видишь проблему – смотри глубже. Возможно, это Before= или After=. Возможно, это ты сам всё запутал.
Будь честен с собой. Тебе не нужны GUI-инструменты. Только терминал. Только raw-контроль. Только systemctl, journalctl и прямые руки. Всё остальное – иллюзия стабильности.
Содержание статьи
Как запускать и останавливать службы с помощью systemctl
Запустить процесс немедленно: используйте systemctl start имя_юнита. Мгновенное применение без автозапуска при старте системы. Хотите автозапуск? Это другой флаг.
Остановить конкретный демон: systemctl stop имя_юнита. Без перезапуска, без маскировки. Просто тихо и резко прекратить выполнение.
Проверка статуса – не блажь, а обязанность: systemctl status имя_юнита. Смотрите журнал прямо здесь, не лезьте в journalctl без необходимости.
Внимание! Некоторые процессы уходят в автозагрузку даже после остановки. Проверяйте через
systemctl is-enabled, иначе будете в ловушке фантомных рестартов.
Перезапустить без остановки на обед: systemctl restart имя_юнита. Используйте, когда требуется сброс без потери зависимости.
Только конфигурация изменилась? Не трогайте весь процесс! systemctl reload имя_юнита. Если юнит это поддерживает. Иначе – падение.
Запуск с автозагрузкой: systemctl enable имя_юнита. Это создаёт симлинк. Не просто флаг. Смотрите в /etc/systemd/system/.
Отключение из старта: systemctl disable имя_юнита. Удаляет линк, но не убивает процесс. Хотите навсегда – смотрите ниже.
Заблокировать навсегда, как змею в мешке: systemctl mask имя_юнита. Это жёстко. Даже root не запустит случайно.
Снять маску: systemctl unmask имя_юнита. Вернуть всё, как было.
Важно помнить: Red OS модифицирует некоторые юниты по умолчанию. Не доверяйте голой документации. Смотрите в
/usr/lib/systemd/systemи сравнивайте с/etc.
Работаете с юнитом nginx.service? Сначала проверьте его файл юнита. Бывает, что после stop он самоперезапускается – виноват Restart=always. Это не баг. Это ловушка.
И наконец: никогда не применяйте enable без start в проде. Упустите запуск – и получите «работающий» демон, который не работает.
Настройка автозапуска служб при загрузке системы
Включить запуск единицы при старте можно прямым способом – без лишних манипуляций:
systemctl enable имя
Будет создана символьная ссылка в директории /etc/systemd/system/. Это жёсткая привязка. Система не спросит – она просто запустит.
Проверить, активен ли автозапуск:
systemctl is-enabled имя
Ответ enabled – значит, включено. disabled – нет. static? Подвох. Такая единица не запускается самостоятельно. Она привязана к другой, запускается только вместе с ней. Не перепутайте.
Отключить автозапуск:
systemctl disable имя
Опция --now – двойной удар. Пример:
systemctl disable --now имя
Отключает автозапуск и сразу же останавливает объект. Без остатка.
Важно помнить: отключённый автозапуск не гарантирует, что процесс не стартанёт вручную или через зависимость. Всегда проверяйте цепочку зависимостей.
Есть ещё preset. Применяет политику, заданную в /etc/systemd/system-preset/. Например:
systemctl preset имя
Только в Red OS здесь часто лежат нестандартные политики. Проверяйте содержимое заранее, чтобы не сработало неожиданно.
Для автоматического старта по условию (например, после монтирования файловой системы):
systemctl enable имя.service --now
И дополнительно прописать зависимость в After=local-fs.target внутри юнита. Без этого – шаткость. Очередность может сбиться.
Внимание! Используйте
wanted-byаккуратно. Лишняя строкаWantedBy=multi-user.targetбездумно прописанная – и ненужный процесс будет висеть в памяти каждый раз при загрузке.
Проверка всех включённых:
systemctl list-unit-files --type=service | grep enabled
Результат – жёсткий список того, что обязательно стартует. Удобно для ревизии. Чистим – значит ускоряем загрузку. Не верьте «по умолчанию всё оптимально». Не в Red OS.
Просмотр статуса и журналов службы через journalctl
Сначала – только точный статус: для мгновенной проверки работы компонента используйте:
systemctl status nginx
Заголовок, PID, путь до юнита, активность, завершения, код выхода. Всё видно. Но это лишь вершина.
Журнал – источник истины. Заходим глубже:
journalctl -u nginx
journalctl -u nginx -f
Полетели логи в реальном времени. Новая строка – новое событие. Всё, что происходит прямо сейчас.
Фильтрация по дате? Да просто:
journalctl -u nginx --since "2025-05-20 10:00" --until "2025-05-20 12:00"
Уточняйте до минут. Если не указывать время – будут сутки. Молчание – зло, логика строгая.
Ищете ошибки? Только ошибки?
journalctl -u nginx -p err
Ошибки – это priority=3. Можно другие уровни: emerg, alert, crit, warning и так далее. Пишите как есть или цифрой (0–7).
Вам нужен журнал после перезагрузки? Без проблем:
journalctl -u nginx -b
Текущая загрузка. Хотите прошлую? -b -1. Ещё раньше? -b -2. Не догадывайтесь – указывайте явно.
Важно! Не забывайте: если логов нет – причина может быть в том, что системный журнал хранится в оперативной памяти. Для постоянного хранения проверьте, что
Storage=persistentв/etc/systemd/journald.conf.
Нужно посмотреть логи другого юнита одновременно?
journalctl -u nginx -u php-fpm
Удар двойной, никаких переключений. Один журнал – две сущности.
Внимание! В Red OS конфигурации часто кастомизированы под безопасность. journalctl может обрезать логи, если
RateLimitIntervalSecиRateLimitBurstзаданы жёстко. Настраивайте в/etc/systemd/journald.conf.
Не доверяйте тишине. Проверяйте журналы. Там вся правда. Сухая, без прикрас. Иногда – неприятная. Но точная.

