Допустим, приложение установлено из пакета, а вам нужно настроить его перезапуск после сбоя. Можно открыть исходный unit-файл и дописать нужные строки, но при обновлении пакета изменения легко потерять.
Сначала посмотрите, из каких файлов сейчас складывается конфигурация сервиса:
systemctl cat myapp.service
Команда покажет основной unit и уже существующие дополнения. Так проще заметить, что нужная настройка могла быть задана раньше в другом файле.
Для своей настройки откройте редактор override-файла:
sudo systemctl edit myapp.service
Добавьте в открывшийся файл только изменяемые параметры:
[Service]
Restart=on-failure
RestartSec=5s
По умолчанию systemctl edit создаёт отдельный override.conf рядом с unit-файлом в каталоге myapp.service.d. Исходный unit при этом остаётся нетронутым.
Проверьте итоговую конфигурацию и запустите сервис заново в подходящий момент:
systemctl cat myapp.service
sudo systemctl restart myapp.service
После перезапуска убедитесь, что сервис жив и настройка применена:
systemctl status myapp.service
systemctl show myapp.service -p Restart
Если нужно отменить изменение, сначала проверьте все локальные дополнения. Команда systemctl revert удаляет не только этот override, а все локальные переопределения указанного unit, поэтому использовать её вслепую опасно.
➡️ DevOps Ready | #совет
