・・・最近のLinux環境(RHEL 9やUbuntuなど)を触り始めた方が、必ずと言っていいほど直面する壁です。
この記事では、自動起動を設定する
chkconfig コマンドの基本的な使い方に加え、現代のLinuxで標準となっている「systemctl」コマンドでの代替手順までを網羅して解説します。chkconfigコマンドとは?(なぜ最近は使えないのか)
chkconfig は、Linuxが起動する際に「どのサービス(Webサーバーやデータベースなど)を自動で立ち上げるか」を設定するためのコマンドです。しかし、これは「SysVinit(シスブイイニット)」という古い起動システムを採用していたCentOS 6などの時代のコマンドです。
現代のRHEL 7/8/9、AlmaLinux、Ubuntuなどでは、より高速で並列処理が得意な「systemd(システムディー)」という新しい仕組みに完全に移行しています。そのため、現代の環境で自動起動を設定する場合は、
chkconfig ではなく systemctl コマンドを使用するのが現場の常識となっています。「command not found」が出たときの対処法
現代のLinux環境でchkconfig を実行すると、以下のエラーが表示されます。# chkconfig httpd on -bash: chkconfig: command not found
このエラーが出た場合の対処法は2つです。
対処法1:systemctl を使う(推奨)
現代の環境では
systemctl が標準コマンドです。後述の乗り換え早見表を参考に、systemctl enable サービス名 を使ってください。対処法2:chkconfig をインストールする(古い環境の保守目的)
どうしても
chkconfig が必要な場合は、Red Hat系ではパッケージとしてインストールできます。# dnf install chkconfig または # yum install chkconfig
現代の標準「systemctl」コマンドへの乗り換え早見表
まずは、現代の最新環境ですぐに作業ができるよう、新旧のコマンド比較表を用意しました。今日からは右側のsystemctl コマンドを使う習慣をつけましょう。| やりたいこと | 昔のコマンド (chkconfig / service) | 現代のコマンド (systemctl) |
|---|---|---|
| 自動起動をONにする | chkconfig サービス名 on |
systemctl enable サービス名 |
| 自動起動をOFFにする | chkconfig サービス名 off |
systemctl disable サービス名 |
| 自動起動の設定状態を確認する | chkconfig --list サービス名 |
systemctl is-enabled サービス名 |
| 自動起動の設定一覧を見る | chkconfig --list |
systemctl list-unit-files -t service |
| サービスを今すぐ起動する | service サービス名 start |
systemctl start サービス名 |
| サービスを今すぐ停止する | service サービス名 stop |
systemctl stop サービス名 |
systemctlコマンドの実践的な使い方
自動起動を有効にする(enable)
systemctl enable は、次回のOS起動時からサービスを自動起動するよう登録するコマンドです。# systemctl enable httpd Created symlink /etc/systemd/system/multi-user.target.wants/httpd.service -> /usr/lib/systemd/system/httpd.service.
※「enable」は自動起動の設定を登録するだけで、今すぐサービスを起動するわけではありません。今すぐ起動したい場合は、合わせて
systemctl start を実行してください。今すぐ起動し、かつ自動起動も設定したい場合は --now オプションが便利です。# systemctl enable --now httpd
自動起動を無効にする(disable)
# systemctl disable httpd Removed /etc/systemd/system/multi-user.target.wants/httpd.service.
systemctl stop httpd を実行してください。自動起動の設定状態を確認する(is-enabled)
設定後はis-enabled コマンドで正しく反映されているか確認するのが現場の基本です。# systemctl is-enabled httpd enabled ← 自動起動が有効な状態 または disabled ← 自動起動が無効な状態
【補足】ランレベルとsystemdの「target」対応表
chkconfig --level 345 のように「ランレベル」で制御していた環境から移行する際に参考になる、systemdの対応概念(target)との対応表です。| ランレベル | 意味 | systemdでの対応target |
|---|---|---|
| 0 | シャットダウン | poweroff.target |
| 1 | シングルユーザーモード | rescue.target |
| 2 | マルチユーザー(ネットワークなし) | multi-user.target |
| 3 | マルチユーザー(テキスト) | multi-user.target |
| 4 | カスタム用途(通常は未使用) | - |
| 5 | マルチユーザー(GUI) | graphical.target |
| 6 | 再起動 | reboot.target |
【古い環境向け】chkconfigコマンドの基本的な使い方
システムの保守運用などで、まだCentOS 6以前やAmazon Linux 1といった古いサーバーを触る必要がある方向けに、chkconfig の基本構文も解説しておきます。(※実行にはroot権限が必要です)1. サービスの自動起動をON / OFFにする
指定したサービスがOS起動時に自動的に立ち上がるように設定(または解除)します。# 自動起動を有効にする場合 # chkconfig httpd on # 自動起動を無効にする場合 # chkconfig httpd off
特定のランレベル(OSの動作モード)だけでON/OFFを制御したい場合は、
--level オプションを使います。# ランレベル3,4,5でのみ自動起動を有効にする # chkconfig --level 345 httpd on
2. サービスの自動起動状態を一覧表示する
現在システムに登録されている全サービスの自動起動(on/off)状態を一覧表示します。# chkconfig --list httpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off sshd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
chkconfig --list httpd)。3. サービスを新しく登録・削除する
自分で作成した起動スクリプトなどを、自動起動の管理対象として追加・削除します。# サービスを追加する # chkconfig --add proftpd # サービスを管理対象から外す # chkconfig --del proftpd
本記事のまとめ
・現代のLinux環境(RHEL 7以降など)では、chkconfig コマンドは使えません。・代わりに
systemctl enable や systemctl disable を使いましょう。・
enable は自動起動の登録のみで、今すぐ起動するには start または enable --now が必要です。・古い環境の保守を行う際は、
chkconfig サービス名 on/off を使用します。サーバーの自動起動やサービス管理で、冷や汗をかいていませんか?
サービスの起動設定を一つ間違えると、「サーバーを再起動したらシステムが立ち上がらない」「Webサイトが表示されない」といった大事故に直面します。ネットの古い情報をそのままコピペして運用するのは非常に危険です。
バージョンに振り回されず、現場で通用するLinuxサーバー構築の"型"を体系的に身につけたい方へ、『Linuxサーバー構築入門マニュアル(図解60P)』を完全無料でプレゼントしています。
「独学の時間がもったいない」「プロから直接、現場の技術を最短で学びたい」という本気の方には、2日で実務レベルのスキルが身につく【初心者向けハンズオンセミナー】も開催しています。
登録10秒/自動返信でDL/合わなければ解除3秒
<<関連記事>>
・pstree
・chsh
・finger
・du
・uname
