Как отключить выключение, чтобы важный процесс не прерывался?

Как отключить выключение, чтобы важный процесс не прерывался?

Какой самый простой способ отключить или временно приостановить перезагрузку/выключение, когда запущен важный процесс? Процесс занимает слишком много времени и не может быть приостановлен/возобновлен, поэтому я предпочитаю не выключать компьютер, пока он запущен. Он запускается из cron, поэтому, если я вручную не проверю запущенные процессы, я не узнаю, что он запущен. Спасибо.

решение1

Для новых систем с systemd это решено с помощью systemd-inhibit. Пример использования:

systemd-inhibit --why="Doing weekly backup" bash my-backups.sh

Тогда, если пользователь попытается завершить работу, это будет разрешено только принудительным образом.

❯ systemctl poweroff
Operation inhibited by "bash my-backups.sh" (PID 2414 "systemd-inhibit", user ntrrgc),
reason is "Doing weekly backup".
Please retry operation after closing inhibitors and logging out other users.
Alternatively, ignore inhibitors and users with 'systemctl poweroff -i'.

решение2

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

Другой (более безопасный) метод. Используйте псевдоним: alias shutdown=' ' Что-то вроде этого более обратимо. Если вы пытаетесь предотвратить выключение от всех пользователей, добавьте псевдоним глобально.

решение3

Отключите команды типа «shutdown/reboot/poweroff/halt/hostname» на критически важных серверах.

chmod 0 /sbin/shutdown

затем, если вам нужно его использовать, измените его обратно на chmod 0755.

решение4

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

Конечно, есть один недостаток: в этот период нельзя пользоваться компьютером.

Отключить ввод с клавиатуры и мыши в Unix (под X)

Связанный контент