В systemd у каждого сервиса есть параметр:
Restart=Он определяет, будет ли сервис автоматически перезапущен, если процесс упал. Если политика не задана (
Restart=no), сервис может просто умереть и никто его не поднимет. На продакшене это часто означает: API внезапно недоступен, очередь сообщений остановилась или воркер перестал обрабатывать задачи. И система жива, но функционально мертва.▪️ Быстрая проверка одного сервиса
systemctl show nginx -p Restart
Пример:
Restart=always
или
Restart=no
▪️ Проверка всех сервисов. Можно быстро найти юниты без restart-policy:
systemctl list-units --type=service --no-legend | awk '{print $1}' |
while read -r svc; do
policy=$(systemctl show "$svc" -p Restart --value)
[[ "$policy" == "no" ]] && echo "$svc"
done
Скрипт выведет сервисы, которые не перезапускаются автоматически.
▪️ Хорошие варианты restart-policy. Чаще всего используют:
Restart=on-failure
или
Restart=always
Разница:
on-failure - перезапуск при ошибкеalways - перезапуск всегда▪️ Пример настройки. В unit-файле:
[Service]
Restart=on-failure
RestartSec=5
RestartSec добавляет паузу перед перезапуском. После изменения:
systemctl daemon-reload
systemctl restart myservice
BashTex 📱 #systemd