Сервис работает после ручного запуска, но пропадает после перезагрузки — найдите причину и почините.
Коллега вручную запустил новый сервис, и он заработал. После следующей перезагрузки сервис не запущен. Вы смотрите его состояние:
$ systemctl status myapp
● myapp.service - My App
Loaded: loaded (/etc/systemd/system/myapp.service; disabled; preset: disabled)
Active: inactive (dead)
$ systemctl is-enabled myapp
disabled
$ journalctl -b -u myapp
-- No entries --
Объясните, почему он не поднялся после перезагрузки, и дайте точный фикс.
unit в состоянии disabled, поэтому при загрузке его ничто не подхватило — start запустил его лишь на ту сессию. start запускает сейчас, но не переживает перезагрузку; enable создаёт симлинк WantedBy для автозапуска, но не сейчас. Пустой journalctl -b показывает: он не стартовал. Фикс: systemctl enable --now myapp.
- ✗Путать
start(запустить сейчас) сenable(запускать при загрузке) - ✗Перезапускать
startпосле каждой загрузки вместо однократного enable - ✗Читать пустой
journalctl -bкак падение, а не как «не стартовал»
- →Какой симлинк создаёт
systemctl enableи в каком каталоге? - →Чем
maskedunit отличается от простоdisabled?
Решение
Причина. В выводе systemctl status ключевое слово — disabled, и is-enabled подтверждает: disabled. unit загружен (Loaded: loaded), но не включён, поэтому при загрузке его ничто не подхватило — симлинка в ….target.wants/ нет. Коллега сделал systemctl start, который запустил сервис на текущую сессию, но это состояние не переживает перезагрузку. Пустой journalctl -b -u myapp (-- No entries --) — не признак падения: он означает, что в эту загрузку сервис вообще не стартовал.
start против enable (суть путаницы):
systemctl start myapp # запустить СЕЙЧАС; не переживает перезагрузку
systemctl enable myapp # автозапуск при загрузке (симлинк WantedBy); НЕ запускает сейчас
systemctl enable --now myapp # и то, и другое
Фикс:
systemctl enable --now myapp
systemctl is-enabled myapp # → enabled