Як відключити відключення, щоб не вдалося перервати важливий процес?


11

Який найпростіший спосіб відключити або тимчасово призупинити перезавантаження / відключення, коли важливий процес запущений? Процес займає занадто багато часу, щоб закінчити, і його не можна призупинити / відновити, тому мені подобається уникати відключення ПК під час його роботи. Він запускається з cron, тому якщо я не вручну перевірятимуть запущені процеси, я б не знав, що він працює. Дякую.


5
Можливий дублікат: ТАК: Тимчасово запобігати відключенню Linux , відповіді натякають на різні рівні, на яких це можна зробити, тобто сценарії оболонки або управління живленням робочого середовища.
sr_

Я не вважаю, що відповідь є достатньо конкретною без пояснення рівнів чи посилання на пояснення. Це не в U&L SE. Чи можу я запитати, який дистрибутив та версію ви використовуєте?
bsd

Замість того, щоб змінювати процедуру відключення, напишіть обгортку, щоб завдання вказувало на її завершення, будь ласка, поштою або торкніться файлу. Перевірте завершення роботи, а потім запустіть завершення роботи. (Cron надсилає власникові вихідні завдання, але це можна змінити).
bsd

Відповіді:


1

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

Ще один (більш безпечний) метод. Скористайтеся псевдонімом: alias shutdown=' ' щось подібне є більш оборотним. Якщо ви намагаєтеся запобігти відключенню від усіх користувачів, додайте псевдонім у всьому світі.


Я думаю про використання псевдоніма, тепер мені просто потрібно написати свій сценарій. Дякую!
zang3tsu

Як щодо інших команд, таких як halt або poweroff. Вам також потрібно створити псевдоніми / перейменувати їх?
mintyfreshpenguin

17

Для нових систем з 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'.

Однак є ця проблема: запускаючи її як root неінтерактивно, ігноруйте блокування. github.com/systemd/systemd/isissue/2680
Алісія

Я думаю, ви неправильно прочитали цей звіт про помилку, вони говорять про те, що він працює poweroffяк неінтерактивний root
Ferrybig

Як я неправильно прочитав звіт про помилку? : S
Алісія

2

Вимкніть "shutdown / reboot / poweroff / halt / hostname" як команди на критичних серверах місії

chmod 0 /sbin/shutdown

тоді, якщо вам потрібно використовувати його, chmod повернеться до chmod 0755.


2
Як щодо halt, poweroffі systemctl poweroff?
Мартін Удінг,

1

Я б відключив команду у файлі / etc / sudoers, щоб виконувати її тільки root.

в / etc / sudoers

# Cmnd alias specification
Cmnd_Alias     SHUTDOWN = /sbin/shutdown

# User privilege specification
root    ALL=(ALL:ALL) ALL
vmule   ALL=(ALL:ALL) ALL, !SHUTDOWN

і коли я намагаюся запустити команду:

vmule@debian:~$ sudo /sbin/shutdown  -r now
Sorry, user vmule is not allowed to execute '/sbin/shutdown -r now' as root on debian.vm

ви можете розробити свою відповідь? вимкнення може не бути чітко вказано в / etc / sudoers.
Архемар

Звичайно, я відредагував відповідь з кращим поясненням. Ура
вмуле

0

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

Звичайно, є недолік, комп'ютер не можна використовувати в цей період.

Вимкнути введення клавіатури та миші на unix (під X)


-1

shutdownтехнічно це також додаток, яке ви можете видалити. Біжи which shutdown. whichце команда, яка показує вам шлях програми. У моєму випадку результат є /sbin/shutdown. Це файл, щоб ви могли просто робити rm shutdown. Або якщо ви хочете тимчасово відключити його, скопіюйте його, змініть ім’я та видаліть вихідний файл.

Якщо ви хочете, ви повинні мати достатні дозволи rm shutdown. Це лише для читання, отже, чому ви можете отримати помилку. Спробуйте видалити його як rootі, якщо потрібно, спробуйте скористатися командою rm shutdown.


3
Чому -rпрапор? Вам не буде потрібно для одного файлу, і якщо ви щось помилково введете, настає катастрофа.
MadTux
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.