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

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

重要なプロセスが実行中のときに、再起動/シャットダウンを無効にしたり、一時的に停止したりする最も簡単な方法は何ですか? プロセスは完了するまでに時間がかかり、一時停止/再開できないため、実行中に PC をシャットダウンすることは避けたいです。これは 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 で に戻しますchmod 0755

答え4

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

もちろん欠点もあります。この期間中はコンピューターが使用できないのです。

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

関連情報