ホームページ >php教程 >PHP开发 >Linuxのshutdownコマンドの詳細説明とinitの詳細説明

Linuxのshutdownコマンドの詳細説明とinitの詳細説明

高洛峰
高洛峰オリジナル
2016-12-17 16:46:051739ブラウズ

Linux で一般的に使用されるシャットダウン/再起動コマンドには、shutdown、halt、reboot、init などがありますが、これらはすべてシステムを再起動するという目的を達成できますが、各コマンドの内部動作プロセスはこの記事の紹介を通じて異なります。さまざまなシャットダウン コマンドをより柔軟に使用できるようになることを願っています。

1. shutdown コマンドはシステムを安全にシャットダウンします。

電源を直接遮断して Linux をシャットダウンするユーザーもいますが、これは非常に危険です。 Linux は Windows とは異なり、バックグラウンドで多数のプロセスが実行されているため、強制的にシャットダウンするとプロセスのデータが失われ、システムが不安定な状態になり、一部のシステムではハードウェア機器が損傷する可能性があります。

システムをシャットダウンする前に shutdown コマンドを使用すると、システム管理者はログインしているすべてのユーザーにシステムがシャットダウンされることを通知し、ログイン コマンドはフリーズされます。つまり、新しいユーザーはログインできなくなります。ログインします。直接シャットダウンしたり、シャットダウンを一定時間遅らせたり、再起動することも可能です。これは、すべてのプロセスがシステムから送信されたシグナルを受信するという事実によって決まります。これにより、vi などのプログラムに現在編集中のドキュメントを保存する時間が与えられ、メールやニュースなどのプログラムは正常に終了できるようになります。シャットダウンは、init プログラムに信号を送信し、ランレベルの変更を要求することによってジョブを実行します。

ランレベル 0 はシャットダウン [停止] に使用されます

ランレベル 6 はシステムを再アクティブ化 [再起動] するために使用されます

ランレベル 1 はシステムを管理作業を実行できる状態にするために使用されます

これはデフォルト。シャットダウンには -h パラメータも -r パラメータも指定されていないと想定されます。シャットダウン (停止) または再起動 (リブート) 中に実行されたアクションを知りたい場合は、ファイル /etc/inittab でランレベル関連の情報を確認できます。シャットダウン パラメーターの説明: 変更前:

[-t]他のランレベルに対して、シャットダウンする時間を init に指示します。

[-r] 電卓を再起動します。

[-k] 実際にはシャットダウンしませんが、各ログインに警告信号を送信するだけです。 ] シャットダウン後に電源を切ります [停止]

c] cancel current process なので、もちろん、このオプションには時間パラメータはありませんが、説明用のメッセージとこのメッセージを入力できます。

[-f] 電卓の再起動時に fsck を無視します [reboot]

[-F] 電卓の再起動時に fsck を強制します [reboot]

[-time] シャットダウンするまでの時間を設定します。 shutdown].

2.halt-- --最も単純なシャットダウンコマンド

実際、haltはshutdown -hを呼び出すことにより、アプリケーションプロセスを強制終了し、同期システムコールを実行し、カーネルを停止します。ファイル システムの書き込み操作が完了した後、

[ -n] fsck でルート パーティションにパッチを適用した後に、カーネルが古いバージョンのスーパーブロックで上書きするのを防ぐために使用されます。 -w] は実際の再起動やシャットダウンではなく、wtmp [/var/log/wtmp] レコードを書き込むだけです

[-d] wtmp レコードを書き込みません [オプション [-n] に含まれます]

[-f] ] shutdown を呼び出さずに強制的にシャットダウンまたは再起動します。

[-i] シャットダウン (または再起動) する前にすべてのネットワーク インターフェイスをオフにします。

3. このオプションはデフォルトのオプションです。 reboot はほぼ同じですが、halt はホストの再起動をトリガーしますが、そのパラメータは 4.init がすべてのプロセスの祖先であり、そのプロセス番号は常に 1 です。 TERM シグナルを init に送信すると、すべてのユーザー プロセス、ガーディアン プロセスなどがこのメカニズムを使用して終了します。また、init の実行レベルを変更できる telinit コマンドもあります。たとえば、telinit -iS ではシステムをシングルユーザー モードに移行できますが、シャットダウンを使用した場合の情報と待ち時間は取得できません。

init の詳しい説明

1. INIT: init は、Linux システムの動作に不可欠なプログラムの 1 つです。

いわゆる init プロセスは、カーネルによって開始されるユーザーレベルのプロセスです。カーネル自体が起動した後 (メモリにロードされ、実行を開始し、すべてのデバイス ドライバーとデータ構造などを初期化した後)、ユーザー レベルのプログラム init を開始してブート プロセスを完了します。したがって、init は常に最初のプロセスになります (プロセス番号は常に 1)。カーネルは、過去に使用されたいくつかの場所で init を探します。その正しい場所 (Linux システムの場合) は /sbin/init です。カーネルが init を見つけられない場合、/bin/sh を実行しようとしますが、それが失敗すると、システムは起動に失敗します。

2. 実行レベル

簡単に言えば、実行レベルはオペレーティングシステムが現在実行されている機能レベルです。レベルの範囲は 1 ~ 6 で、それぞれ異なる機能があります。さまざまな実行レベルは次のように定義されます: (Red Hat Linux では /etc/inittab を参照できます)

# 0 - シャットダウン (initdefault を 0 に設定しないでください)

# 1-シングルユーザーモード

runlevel)

# 4 - 未使用

# 5 - X11 (xwindow)

# 6 - 再起動 (6 には initdefault を設定しないでください)

これらのレベルは /etc/inittab ファイルで指定されます。このファイルは、init プログラムが検索するメイン ファイルです。最初に実行されるサービスは、/etc/rc.d ディレクトリに配置されたファイルです。ほとんどの Linux ディストリビューションでは、起動スクリプトは /etc/rc.d/init.d にあります。これらのスクリプトは、ln コマンドを使用して /etc/rc.d/rcn.d ディレクトリにリンクされます。 (ここでの n は実行レベル 0 ~ 6 です)

3. 実行レベルの構成

実行レベルの構成は、以下に示すように /etc/inittab 行で実行されます。

12: 2: wait: / etc / init. d / rc 2

最初のフィールドは任意に指定されたラベルです

2 番目のフィールドは、この行が実行に適用されるレベルを示します (ここでは 2 です) 3 番目のフィールドは、実行レベルに入るときを示します。 、init は 4 番目のフィールドのコマンドを 1 回実行し、init はコマンドが終了するまで待機する必要があります。 /etc/init.d/rc コマンドは、ランレベル 2 に入るために入力を開始および終了するために必要なコマンドを実行します。

4 番目のフィールドのコマンドは、実行レベルを設定するときにすべての「雑用」を実行します。新しいランレベル内で実行されなくなったサービスを開始し、実行すべきではなくなったサービスを終了します。 Linux のバージョンに応じて、使用される特定のコマンドも異なり、実行レベルの構成も異なります。

init が開始すると、/etc/inittab 内のコード行が検索されます。この行は、デフォルトの実行レベルを指定します: id: 2: initdefault:

起動時に、init にデフォルト以外の実行レベルを入力するように要求できます。これは、カーネルに「単一」または「緊急」コマンド ライン引数を指定することによって実現されます。たとえば、カーネル コマンド ライン パラメータの指定は、LILO を通じて実行できます。このようにして、シングルユーザー モード (つまり、ランレベル 1) を選択できます。システムの実行中に、telinit コマンドで実行レベルを変更できます。実行レベルが変更されると、init は /etc/inittab から対応するコマンドを実行します。

4. /etc/inittab の特別な構成

/etc/inittab には、init が特別なイベントを再アクティブ化できるようにするいくつかの特別な機能があります。これらの特別な機能には、3 番目のフィールドの特別なキーワードがマークされています。例:

1. powerwait 電源が切断されたときに init がシステムをシャットダウンできるようにします。前提条件は、UPS と、UPS を監視し、電源が切断されたことを init に通知するソフトウェアを備えていることです。

2. ctrlaltdel ユーザーがコンソールキーボードの C t r l + Al t + D e l キーの組み合わせを押したときに、init がシステムを再起動できるようにします。システムが公共の場所に配置されている場合、システム管理者は、C t r l + Alt + Del キーの組み合わせを無視するなど、他の動作を行うように設定できることに注意してください。

3. sysinit システムの起動時に実行されるコマンド。たとえば、このコマンドは /tmp をクリアします。

上記の特別なキーワードのリストはまだ完成していません。他のキーワードとその使用法の詳細については、inittab のマニュアル ページを参照してください。




Linux のシャットダウン コマンドと init の詳細については、PHP 中国語 Web サイトの関連記事に注目してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。