web-dev-qa-db-ja.com

重要なプロセスが中断されないようにシャットダウンを無効にする方法は?

重要なプロセスが実行されているときに再起動/シャットダウンを無効にするか一時的に一時停止する最も簡単な方法は何ですか?プロセスが完了するには時間がかかりすぎて一時停止/再開できないため、実行中のPCのシャットダウンを避けたいです。これはcronから実行されるため、実行中のプロセスを手動で確認しない限り、実行されていることはわかりません。ありがとう。

10
zang3tsu

which shutdownを実行して、シャットダウンプログラムへのパスを確認します。ファイル名は変更できますが、お勧めしません。

別の(より安全な)方法。エイリアスを使用してください:alias shutdown=' 'このようなものはより可逆的です。すべてのユーザーからのシャットダウンを防止する場合は、エイリアスをグローバルに追加します。

1
Emil

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'.
17
Alicia

ミッションクリティカルなサーバーで「shutdown/reboot/poweroff/halt/hostname」のようなコマンドを無効にする

chmod 0 /sbin/shutdown

その後、それを使用する必要がある場合は、chmod 0755にchmodしてください。

2
danny

/ 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
1
vmule

アップグレード中にローカルユーザーがラップトップをシャットダウンしないようにしたいと考えました。最善の方法は、入力デバイスを無効にすることでした。私にとっては、マウスを無効にするだけで十分でしたが、キーボードも無効にすることができます。

もちろん、欠点もあります。この間、コンピュータは使用できません。

NIXでキーボードとマウスの入力を無効にする(Xの下)

0
Daniel F

shutdownも技術的にはアプリケーションであり、削除することができます。 which shutdownを実行します。 whichは、アプリケーションのパスを表示するコマンドです。私の場合、出力は/sbin/shutdownです。これはファイルなので、rm shutdownを実行できます。または、一時的にコピーを無効にする場合は、名前を変更して元のファイルを削除します。

rm shutdownを実行するには、十分な権限が必要です。これは読み取り専用であるため、エラーが発生する可能性があります。 rootとして削除するか、必要に応じてrm shutdownコマンドを使用してください。

0
William Edwards