Chkconfig コマンドは、システムの起動時に自動的に開始するように構成されたサービスをセットアップ、表示、または変更するために使用されます。
この記事には、chkconfig コマンドの使用方法を説明する 7 つの実用的な例が含まれています。
1.シェル スクリプトからサービスの起動ステータスを確認する
サービス名のみで chkconfig コマンドを実行すると、サービスが起動用に構成されている場合は true が返されます。次のコード スニペットは、サービスが起動用に構成されているかどうかをシェル スクリプトから確認する方法を示しています。
# vi check.sh chkconfig network && echo "Network service is configured" chkconfig junk && echo "Junk service is configured" # ./check.sh Network service is configured
特定の実行レベル用に構成されているかどうかを具体的に確認することもできます。
# vi check1.sh chkconfig network --level 3 && echo "Network service is configured for level 3" chkconfig network --level 1 && echo "Network service is configured for level 1" # ./check1.sh Network service is configured for level 3
2.スタートアップ サービスの現在のステータスを表示
–list オプションは、現在のスタートアップ構成ステータスを持つすべてのサービスを表示します。
# chkconfig --list abrtd 0:off 1:off 2:off 3:on 4:off 5:on 6:off acpid 0:off 1:off 2:off 3:off 4:off 5:off 6:off atd 0:off 1:off 2:off 3:on 4:on 5:on 6:off ...
システムの起動時に開始されるように構成されているサービスのみを表示するには、次の手順を実行します。これは、システムの起動レベルが 3 であることを前提としていることにご注意ください。
chkconfig --list | grep 3:on
注意 :利用可能なすべてのシステム実行レベルを表示するには、Linux ブート プロセスの 6 段階を参照してください
特定のサービスのスタートアップ構成を表示するには、そのサービスの「chkconfig –list」の出力を grep します。
chkconfig --list | grep network
3.スタートアップに新しいサービスを追加
–add オプションを使用して、システムの再起動中に開始されるサービスのリストに特定のサービスを追加します。
次の例は、開始する必要があるサービスのリストに新しいサービス (iptables など) を追加する方法を示しています。以下に示すように、「chkconfig –add」コマンドは、レベル 2、3、4、および 5 も自動的にオンにします。
# chkconfig --list | grep iptables # chkconfig --add iptables # chkconfig --list | grep iptables iptables 0:off 1:off 2:on 3:on 4:on 5:on 6:off
注:「chkconfig –add」は、既存のサービスをスタートアップのリストに追加するだけです。サービスが存在しない場合は、システムのスタートアップ リストに追加する前に、まずサービスをインストールする必要があります。これは非常に明白ですが、初心者がこの間違いを犯す可能性があるため、言及する価値があります。
4.スタートアップ リストからサービスを削除する
次の例は、ip6tables サービスが起動用に構成されていることを示しています。
# chkconfig --list | grep ip6tables ip6tables 0:off 1:off 2:off 3:on 4:off 5:off 6:off
スタートアップ リストから削除するには、以下に示すように –del オプションを使用します。
# chkconfig --del ip6tables # chkconfig --list | grep ip6tables
5.選択した実行レベルのサービスをオンまたはオフにする
サービス全体を削除したくない場合があります。代わりに、特定の実行レベル (特定のサービス) に対してフラグをオンまたはオフにしたい場合があります。
次の例では、レベル 5 の nfserver サービスをオフにします
# chkconfig --level 5 nfsserver off
複数のレベルを組み合わせることもできます。次の例では、レベル 3 と 5 の両方で nfsserver をオフにします。
# chkconfig --level 35 nfsserver off
6. rc.d サブディレクトリの下のスクリプト ファイル
chkconfig コントロールからサービスを追加または削除すると、/etc/rc.d サブディレクトリの下で次の処理が実行されます。
- chkconfig –add コマンドを実行すると、対応する rc ディレクトリの下にサービスを開始および停止するためのシンボリック リンク ファイルが作成されます。
- chkconfig –del コマンドを実行すると、対応する rc ディレクトリからシンボリック リンク ファイルが削除されます。
次の例は、実行レベル 3 と 5 の両方で xinetd が有効になっていることを示しています。
したがって、xinetd は rc3.d ディレクトリの下に 2 つのファイルを持ち、rc5.d ディレクトリの下に 2 つのファイルを持ちます。 K で始まるファイルは、シャットダウン時に使用されます (K は kill を表します)。 S で始まるファイルは、起動時に使用されます (S は開始を表します)。
# chkconfig --list | grep xinetd xinetd 0:off 1:off 2:off 3:on 4:off 5:on 6:off xinetd based services: # cd /etc/rc.d/rc3.d # ls | grep xinetd K08xinetd S14xinetd # cd /etc/rc.d/rc5.d # ls | grep xinetd K08xinetd S14xinetd
7.追加操作のための rcx.d ディレクトリの変更
新しいサービスを chkconfig コントロールに追加すると、そのサービスのデフォルトの実行レベルが自動的に有効になり、対応する rcx ディレクトリの下にファイルが作成されます。
たとえば、nfsserver サービスが chkconfig コントロールに存在しない場合、以下に示すように /etc/rc.d/rc*.d ディレクトリの下に nfsserver サービス起動ファイルは存在しません。
# chkconfig --list | grep nfsserver nfsserver 0:off 1:off 2:off 3:off 4:off 5:off 6:off # ls /etc/rc.d/rc3.d | grep nfsserver # ls /etc/rc.d/rc5.d | grep nfsserver
nfsserver サービスを追加すると、これらのディレクトリの下にシンボリック リンクが表示されます。
# chkconfig --add nfsserver nfsserver 0:off 1:off 2:off 3:on 4:off 5:on 6:off # cd /etc/rc.d/rc3.d # ls -l | grep nfsserver lrwxrwxrwx 1 root root 12 2011-06-18 00:52 K08nfsserver -> ../nfsserver lrwxrwxrwx 1 root root 12 2011-06-18 00:52 S14nfsserver -> ../nfsserver # cd /etc/rc.d/rc5.d # ls -l | grep nfsserver lrwxrwxrwx 1 root root 12 2011-06-18 00:52 K08nfsserver -> ../nfsserver lrwxrwxrwx 1 root root 12 2011-06-18 00:52 S14nfsserver -> ../nfsserver
–del オプションまたは –level オプションを使用してサービスをオフにすると、以下に示すように、rcx.d ディレクトリの下の対応するシンボリック リンク ファイルが削除されます。
# chkconfig --level 5 nfsserver off # ls /etc/rc.d/rc5.d | grep nfsserver