CentOSを正常に再起動する最良の方法は?


82

私はいつもコマンドを使用しました:

shutdown -r now

ただし、それによってMySQLの問題が発生する場合があります。

CentOSを再起動する最も適切な方法は何ですか?

私は見た:

reboot

そして

halt

マシンを静かに再起動するにはどうすればよいですか?


3
reboot本質的にshutdown -r...そう...ええへのエイリアスです。
ネイサンC 14

私の投稿はあなたの質問に答えましたか、それとも何か他のことを知る必要がありますか?
ジョフリー14

ここにはまだコメントできませんが、再起動に関する警告をここに表示したかったのです。インスタンスがAmazon EC2にある場合、reboot -hを実行するとインスタンスがブリックされるため、これを実行しないでください。代わりに、シャットダウンまたは再起動する必要がある場合は、シェルではなくAmazonのオンラインインターフェイスを使用してください。インスタンスをブリックする場合、新しいインスタンスに付属する最初のボリュームをデタッチせずに、インスタンスを停止し、ボリュームをデタッチし、別のインスタンスを作成し、それにボリュームをアタッチできます。次に、新しいインスタンスにsshし、古いボリュームをマウントして、そこからファイルを取得する必要があります。
kloddant

実際には、すべてのファイルI / Oが同期されるように、実行するsync: sync;前に実行するshutdown -r必要があります。これにより、次の問題も解決されるとmysql
思わ

回答:


95

これらのコマンド以外のものを使用してサーバーを再起動するより良い方法はありません。

  • シャットダウンは、システムを停止する最も一般的な方法です。引数-rと特定の時間(または ' now')を追加すると、シャットダウンシーケンス後にシステムを停止する代わりに、システムが再起動します。
  • 再起動は、いくつかのハードディスクのメンテナンスを行うラッパーラウンドシャットダウンです(同期および/またはスタンバイモードになりますが、実際には関係ありません)。
  • reboot(> 2.74)の新しいバージョンはshutdown、ランレベル0または6でない場合に開始されます。
  • ほとんどのinitスクリプトは、haltを呼び出してutmpにログを作成します。

最新のディストリビューションでは、使用しているコマンドに関係なく、すべてのタスクがカバーされます。基本的に、これらはすべてSysV(CentOS <7)またはsystemd(CentOS> = 7)スクリプトのシャットダウンランタイムを開始します(読みやすくするためにinitスクリプトと呼びます)。

initスクリプトを使用して段階的にシャットダウンすると、通常ランレベル「S」で登録されているすべてのサービスが停止します。CentOSのMySQL initスクリプトのように、個々のinitスクリプトにタイムアウトを設定できます。stop引数が指定され、デーモンがかなりの時間シャットダウンされない場合、スクリプトは停止して終了し、エラーが発生します。シャットダウンプロセスは、何も問題がなかったかのように続行し、少し時間がかかり、おそらく警告が出力されます。最後に、すべてのinitスクリプトが実行されると、避けられないことが起こります。まだ実行中のすべてのプロセスはSIGTERM シグナルを受け取り、数秒(2または5)後にSIGKILL。これにより、ACPI呼び出しが行われてシステムが実際に再起動またはシャットダウンされる前に、残りがクリーンアップされます。

1つの例外はreboot-fオプションを指定してコマンドを使用することです。これは、initスクリプトの実行をスキップし、システムを直接再起動します。

心配の根本原因を修正する方が良いでしょう:MySQLが適切にシャットダウンしない。

多くの場合、これはデーモンを安全に終了する前に行う必要がある膨大な作業負荷によるものです。+300.000テーブルのMySQLインスタンスがあり、終了するのに1時間以上かかったことがありました。同様の問題は、巨大なバッファとまばらなI / O可用性を使用するシステムでも見られます。


31

rootとしてコマンドを使用して、Centos 6.xの正常なシャットダウンを実行する必要があります。

shutdown -h now

これにより、サーバーを正常にシャットダウンする前に、実行中のすべてのサービスを停止しようとします。

このコマンドを使用すると、mySQLソケットの問題も防止できます。

同様に、グレースフルリブートの場合:

reboot -h now

同様の質問に関する以前の回答をここで読むことができます。

https://stackoverflow.com/questions/20407292/centos-another-mysql-daemon-already-running-with-the-same-unix-socket


7
私はあなたが意味するshutdown -r now、または多分ただと思うreboot。このrebootコマンドには-hオプションがありません。
マイケルハンプトン

1
こんにちは、Michael、Centos 6.xには、再起動する前にサービスを停止するオプションがあります。「shutdown -h now」は正常なシャットダウンであり、「reboot -h now」は正常なリブートです。
Centos

1
ああ?そして、この-hオプションは何をしますか?マニュアルページにはありません。
マイケルハンプトン

2
本当に?これに関するドキュメントはありますか?なぜなら、まず、それrebootなしで 行うことだから-hです。第二に、私が知る限り、それはまったくそのように文書化されていません。
マイケルハンプトン

2
リンクしたばかりのドキュメントには、私があなたに言ったことを正確に記載しています!reboot全く持っていない-h、オプションをshutdown行います。
マイケルハンプトン

2

エンドユーザーと顧客にリモート指示を与えるとき、私はそれらを使用poweroffしてシステムをシャットダウンし、電源を切るように指示します。

ウォームリブートが必要な場合は、rebootコマンドを使用することをお勧めします。

発行Ctrl-Alt-Deleteもこれを達成すると言うことができると思います;)


この返信には同意しません。再起動とシャットダウン(Ctrl-Alt-Delete)は強制的であり、mySQLを実行している環境などの一部の環境では、ソケット「ロック」を引き起こす可能性があり、新しいソケットを作成するか、既存のソケットを削除/移動してから新しい1。
GeckoSEO 14

1
@GeckoSEOこれは、LinuxサーバーでCtrl-Alt-Deleteを有効すること危険性に言及する面白そうな提案でした。
ewwhite 14

一方、私の回答は面白くなく、単にこの質問を解決しようとしている人々の答えを明確にしようとしていました。私の以前の答えを見てください、それが役立つことを願っています。
GeckoSEO 14

2

コマンド 'init 6'を使用します。

init 6は、initファイルに記述されているすべての生成されたプロセス/デーモンを(開始した順序とは逆に)シャットダウンし、最後にshutdown -r nowコマンドを呼び出してマシンを再起動するようinitプロセスに指示します。

詳細については、この質問をご覧ください。


0

この答えが気に入らないかもしれませんが、この答えには他の誰も考えていない洞察が含まれています。。。あなたが書く:

私はいつもコマンドを使用しました:

shutdown -r now

ただし、それによってMySQLの問題が発生する場合があります。

ここでの問題は、シャットダウンの方法ではなく、シャットダウンを適切に処理できないソフトウェアの一部です。MySql。

本当にこれに対処できる唯一の方法は、MySqlを置き換えることです(PostgreSqlは優れた代替品です)。

... 26年以上データベースシステムを専門とする人として、MySQLがデータベースシステムとは何かという最も重要な側面で能力に関する行動を取り始めたのはごく最近のことです。 for-データのセキュリティ/整合性。以前は、これらの側面にあまり注意を払わず、パフォーマンスにもっと注意を払っていました。しかし、データを失った場合の優れたパフォーマンスは何でしょうか?たとえば、Netflixストリーミングビデオ録画などの一部のアプリケーションでは、視聴中の絶対的な忠実度は特に重要ではない場合があります。しかし、銀行システムでは、それは大規模な災害です。データ所有者のみが、自分に適したものを知ることができます。


1
システムの再起動またはシャットダウンの問題が原因でmysqlを置き換えますか?溶液の最後の部分は質問をする人の問題解決するために何も寄与しない
ftrujillo

この回答は、ソースや参照なしでmysqlに対して偏っています。質問の文脈では役に立ちません。終了するのに時間がかかりすぎるソフトウェアは、リブート時に問題を引き起こす可能性があります(特にsystemdとその積極的なタイムアウト)。
Harald
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.