重要なプロセスが実行されているときに再起動/シャットダウンを無効にするか一時的に一時停止する最も簡単な方法は何ですか?プロセスが完了するには時間がかかりすぎて一時停止/再開できないため、実行中のPCのシャットダウンを避けたいです。これはcronから実行されるため、実行中のプロセスを手動で確認しない限り、実行されていることはわかりません。ありがとう。
重要なプロセスが実行されているときに再起動/シャットダウンを無効にするか一時的に一時停止する最も簡単な方法は何ですか?プロセスが完了するには時間がかかりすぎて一時停止/再開できないため、実行中のPCのシャットダウンを避けたいです。これはcronから実行されるため、実行中のプロセスを手動で確認しない限り、実行されていることはわかりません。ありがとう。
回答:
実行which shutdown
して、シャットダウンプログラムへのパスを確認します。ファイル名は変更できますが、お勧めしません。
別の(より安全な)メソッド。エイリアスを使用する:alias shutdown=' '
このようなものはより可逆的です。すべてのユーザーからのシャットダウンを防止する場合は、エイリアスをグローバルに追加します。
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'.
poweroff
ミッションクリティカルなサーバーで「shutdown / reboot / poweroff / halt / hostname」のようなコマンドを無効にする
chmod 0 /sbin/shutdown
次に、それを使用する必要がある場合は、chmodでに戻しchmod 0755
ます。
halt
、poweroff
とsystemctl poweroff
?
/ 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
アップグレード中にローカルユーザーがラップトップをシャットダウンできないようにしたいと考えていました。入力デバイスを無効にするのが最善の方法でした。私にとっては、マウスを無効にするだけで十分でしたが、キーボードも無効にすることができます。
もちろん、欠点もあります。この間、コンピュータは使用できません。
shutdown
技術的にはアプリケーションでもあり、削除することができます。を実行しますwhich shutdown
。which
アプリケーションのパスを表示するコマンドです。私の場合、出力は/sbin/shutdown
です。これはファイルなので、実行できますrm shutdown
。または、一時的に無効にしたい場合は、名前を変更して元のファイルを削除してください。
必要な場合は、十分な権限が必要ですrm shutdown
。これは読み取り専用であるため、エラーが発生する可能性があります。削除するroot
か、必要に応じてコマンドを使用してくださいrm shutdown
。
-r
フラグ?1つのファイルにそれを必要とせず、何かをタイプミスすると、災害が発生します。