chkconfigでLinuxのサービス自動起動を設定する方法|systemctlへの移行早見表付きコマンド


この記事の監修:宮崎智広(Linux教育歴15年以上・受講者3,100名超)
HOMELinux技術 リナックスマスター.JP(Linuxマスター.JP)Linuxコマンド, LinuxコマンドA-E, システム管理コマンド > chkconfigでLinuxのサービス自動起動を設定する方法|systemctlへの移行早見表付きコマンド
「chkconfigでサービスの自動起動を設定したいのに、command not foundと出てしまう」
「chkconfigの書き方は知っているけど、systemdではどうすればいいのかわからない」

この記事では、chkconfigコマンドの基本的な使い方と、現代のsystemd環境での代替コマンドへの乗り換え方法を解説します。
【この記事でわかること】
・chkconfigはサービスの自動起動を設定するコマンド(CentOS 6以前など)
・CentOS 7以降のsystemd環境ではsystemctl enable/disableを使う
・command not foundが出た場合の対処法も解説

「このままじゃマズい」と感じていませんか?
参考書を開く気力もない、同年代に取り残される不安——
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
図解60P/登録10秒/解除も3秒 / 詳細はこちら

「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

※ただし現代の環境では、systemdネイティブのサービス(.serviceファイル)はchkconfigで管理できません。基本的には対処法1を推奨します。

現代の標準「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.

「Created symlink」と表示されれば、自動起動の登録は成功です。

「enable」は自動起動の設定を登録するだけで、今すぐサービスを起動するわけではありません。今すぐ起動したい場合は、合わせて systemctl start を実行してください。今すぐ起動し、かつ自動起動も設定したい場合は --now オプションが便利です。

# systemctl enable --now httpd

自動起動を無効にする(disable)

# systemctl disable httpd Removed /etc/systemd/system/multi-user.target.wants/httpd.service.

「disable」は次回OS起動時から自動起動しなくなる設定です。今すぐサービスを停止したい場合は、合わせて 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

本記事のまとめ

やりたいこと コマンド
自動起動を有効にする(systemd) systemctl enable サービス名
自動起動を無効にする(systemd) systemctl disable サービス名
今すぐ起動 + 自動起動を設定(systemd) systemctl enable --now サービス名
自動起動の状態を確認(systemd) systemctl is-enabled サービス名
自動起動を有効にする(CentOS 6以前) chkconfig サービス名 on
自動起動を無効にする(CentOS 6以前) chkconfig サービス名 off

サービスの自動起動設定を確実に身につけたいですか?

chkconfigからsystemctlへの移行は、現代のサーバー管理に欠かせない知識です。
ネットの切れ端の情報をコピペするだけでなく、現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、『Linuxサーバー構築入門マニュアル(図解60P)』を完全無料でプレゼントしています。

「独学の時間がもったいない」「プロから直接、現場の技術を最短で学びたい」という本気の方には、2日で実務レベルのスキルが身につく【初心者向けハンズオンセミナー】も開催しています。


暗記不要・1時間後にはサーバーが動く

3,100名以上が実践した「型」を無料で公開中

プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。

登録10秒/合わなければ解除3秒 / 詳細はこちら

Linux無料マニュアル(図解60P) 名前とメールで30秒登録

宮崎 智広

この記事を書いた人

宮崎 智広(みやざき ともひろ)

株式会社イーネットマーキュリー代表。現役のLinuxサーバー管理者として15年以上の実務経験を持ち、これまでに累計3,100名以上のエンジニアを指導してきたLinux教育のプロフェッショナル。「現場で本当に使える技術」を体系的に伝えることをモットーに、実践型のLinuxセミナーの開催や無料マニュアルの配布を通じてLinux人材の育成に取り組んでいる。

趣味は、キャンプにカメラ、トラウト釣り。好きな食べ物は、ラーメンにお酒。休肝日が作れない、酒量を減らせないのが悩み。最近、ドラマ「フライトエンジェル」を観て涙腺が崩壊しました。