Обнаружить ожидание выключения Linux - PullRequest
5 голосов
/ 19 февраля 2011

Поскольку я устанавливаю ожидающие обновления для своего сервера Ubuntu как можно скорее, мне приходится довольно часто перезагружать мой сервер Linux. Я запускаю веб-приложение на этом сервере и хотел бы предупредить моих пользователей о предстоящем перезапуске. Прямо сейчас я делаю это вручную, добавляю объявление перед перезапуском, даю им время закончить работу, перезапускаю и удаляю объявление.

Надеюсь, shutdown -r +60 записывает файл со всей информацией о перезапуске, который я могу проверять при каждом доступе. Есть ли такой файл? Из соображений производительности предпочел бы файл в виртуальной файловой системе, такой как / proc ...

Я использую Ubuntu 10.04.2 LTS

Ответы [ 5 ]

10 голосов
/ 11 июля 2018

Если вы используете systemd, следующая команда показывает информацию о запланированном завершении работы.

cat /run/systemd/shutdown/scheduled
4 голосов
/ 19 февраля 2011

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

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

Пример сценария:

shutdown.bsh
touch /somefolder/somefile
shutdown -r $1

затем проверьте «somefile» в вашем веб-приложении.

Вам нужно было бы добавить ссылку для запуска, которая стерла 'somefile', иначе она все еще была бы там, когда система запускалась, и веб-приложение всегда сообщало вашим пользователям, что оно собирается завершить работу.

4 голосов
/ 05 июня 2014

Вы можете просто проверить запущенный процесс выключения:

if ps -C shutdown > /dev/null; then
  echo "Shutdown is pending"
else
  echo "Shutdown is not scheduled"
fi
0 голосов
/ 28 декабря 2018

Для более новых версий дистрибутивов Linux вам может понадобиться:

busctl get-property org.freedesktop.login1 /org/freedesktop/login1 org.freedesktop.login1.Manager ScheduledShutdown

Метод работы выключения изменился

Пробовал на: - Debian Stretch 9.6 - Ubuntu 18.04.1 LTS

Ссылки

0 голосов
/ 19 февраля 2011

Вы могли бы написать демон, который делает объявление, когда он ловит сигнал SIGINT / SIGQUIT .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...