重要なプロセスが実行されているときに再起動/シャットダウンを無効にするか一時的に一時停止する最も簡単な方法は何ですか?プロセスが完了するには時間がかかりすぎて一時停止/再開できないため、実行中の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'.
ミッションクリティカルなサーバーで「shutdown/reboot/poweroff/halt/hostname」のようなコマンドを無効にする
chmod 0 /sbin/shutdown
その後、それを使用する必要がある場合は、chmod 0755
にchmodしてください。
/ 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
コマンドを使用してください。