Linuxグレースフルシャットダウン


17

「shutdown -h now」は、「kill -15」ではなく、すべてのプロセスで「kill -9」に似た動作をするため、正常なシャットダウンコマンドではないと聞いています。

これは本当ですか、もしそうなら、すべてが自己の後にクリーンアップする時間を確保するためにシャットダウンするより優雅な方法は何ですか?

Ps主にCentOS、Ubuntu、およびDebianを使用します。


私は誰かがチャイムするのを待ちますが、それはまったく正しく聞こえません。-hは、再起動ではなくシステムをHALTモードにするように指示しています。「今」は、ユーザーがシャットダウンする猶予期間がないことを意味します。これらのいずれかがシャットダウンの実際のキル行動変更する方法をわからない
ジェフリー・スミス

4
シャットダウンのマニュアルページをお読みください(man shutdown)。これを完全に説明します。
アンドリューシュルマン

回答:


15

shutdown -h now/etc/rc.d/rcまたはを呼び出します/etc/init.d/rcrcスクリプトは、新しいランレベル(0のKillスクリプトを呼び出します-hため6、-r任意の起動スクリプトが続きます)、。

あなたのディストリビューションに応じて、S30killprocsまたはS00killallそのようなものが表示されます。これは、すべてのkillスクリプトが呼び出されて、各サービスを順番に停止しようと試みた後に発生します。kill -15最初に試行し、その後に試行しkill -9ます。

短い答え:shutdown -h nowまたはshutdown -r now優雅です。 haltそして、reboot非優雅でしたが、彼らは単に呼びますshutdownあなたが使用しない限り、あなたのための-fオプションを選択します。


12

いいえ、そうではありません。shutdowninitレベルを変更すると、すべてのシャットダウンスクリプトが実行されます。これらのスクリプトが行うことは、スクリプトによって異なります。ただし、通常はプロセスを終了するのではなく、終了する信号を送信します。

したがって、これは次のマニュアルの抜粋ですshutdown

   shutdown  brings  the system down in a secure way.  All logged-in users
   are notified that the system is going down, and  login(1)  is  blocked.
   It is possible to shut the system down immediately or after a specified
   delay.  All processes are first notified that the system is going  down
   by the signal SIGTERM.  This gives programs like vi(1) the time to save
   the file being edited, mail and news processing programs  a  chance  to
   exit  cleanly,  etc.   shutdown  does  its  job  by signalling the init
   process, asking it to change the runlevel.  Runlevel 0 is used to  halt
   the  system, runlevel 6 is used to reboot the system, and runlevel 1 is
   used to put to system into a state where administrative  tasks  can  be
   performed; this is the default if neither the -h or -r flag is given to
   shutdown.  To see which actions are taken on halt  or  reboot  see  the
   appropriate entries for these runlevels in the file /etc/inittab.

1
私が使用したすべてではないにしても、ほとんどのディストリビューションで、ランレベル6(リブート)rcスクリプトが最後に行うことは、グローバルなkillallを実行して、残留プロセスまたはハングプロセスをキャッチすることです。ただし、これは通常の停止スクリプトがすべて完了した後に実行されます。
アダプター

2
@adaptrもちろん。しかし、プロセスは正常に終了する機会がありました。彼らがそうしなかったなら、彼らを殺す以外に他の可能性はありません。
のmailq
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.