Как автоматически перезапустить службы Linux в Amazon Linux 2 с помощью Systemctl?

Кажется, что большинство онлайн-руководств относятся к Amazon Linux с использованием init.d, которого нет в Amazon Linux 2. Systemctl есть в Amazon Linux 2, который, похоже, не способен (насколько я обнаружил на сегодняшний день) автоматически перезапуск службы в случае сбоя, т. е. httpd. Я смотрел Монит.

... только что нашел немного дополнительной информации при написании этого, и похоже, что systemctl может автоматически перезапускать службы, добавляя строку;

Restart=always

Я попробовал это, и systemctl обнаружил, что в одной из служб произошло изменение файла. Итак, я выполнил следующую команду, как было предложено, и она не сработала;

systemctl daemon-reload

В итоге мне пришлось перезапустить коробку после удаления внесенных изменений, чтобы получить службу, которую я изменил в файле для резервного копирования и запуска.

Похоже, что systemctl может выполнять автоматический перезапуск. В настоящее время я немного растерян, поскольку документация, как обычно, ужасна, когда вы добираетесь до этого уровня конфигурации, смешайте это с бесконечными нюансами того, как AWS AMI ведут себя не так, как вы ожидаете.

Одна конкретная служба периодически дает сбой (что неудивительно, поскольку она находится на самом маленьком экземпляре EC2, который вы только можете себе представить, но работает в 99% случаев). Поэтому я бы предпочел, чтобы я мог настроить systemctl или Monit для автоматического перезапуска службы на время, прежде чем мне придется масштабировать экземпляр EC2 до большего размера.

ОБНОВЛЕНИЕ Чтобы добавить пример службы, httpd, это готовая конфигурация;

[Unit]
Description=The Apache HTTP Server
Wants=httpd-init.service
After=network.target remote-fs.target nss-lookup.target httpd-init.service
Documentation=man:httpd.service(8)

[Service]
Type=notify
Environment=LANG=C

ExecStart=/usr/sbin/httpd $OPTIONS -DFOREGROUND
ExecReload=/usr/sbin/httpd $OPTIONS -k graceful
# Send SIGWINCH for graceful stop
KillSignal=SIGWINCH
KillMode=mixed
PrivateTmp=true

[Install]
WantedBy=multi-user.target

person Michael Cropper    schedule 17.05.2021    source источник


Ответы (1)


Systemd несколько раз пытается запустить службу и прекращает попытки, если служба достигает StartLimitBurst. Возможно, в вашем сервисе отсутствует конфигурация.

person Javier Galarza    schedule 17.05.2021
comment
Спасибо, Хавьер. Я только что добавил стандартный файл конфигурации. Единственной строкой, которую я добавил ранее, была Restart=always, что сломало ситуацию. Здесь чего-то не хватает, что должно быть вместе со строкой Restart=always? - person Michael Cropper; 18.05.2021
comment
Вы определяете тип как уведомление. Вы должны изменить его на forking для apache - person Javier Galarza; 18.05.2021