systemctlコマンドの使い方|サービスの起動・停止・自動起動設定


図解60p「Linuxサーバー構築入門マニュアル」無料
登録10秒/自動返信でDL/合わなければ解除3秒
HOMELinux技術 リナックスマスター.JP(Linuxマスター.JP)Linuxコマンド, LinuxコマンドP-T, システム管理コマンド > systemctlコマンドの使い方|サービスの起動・停止・自動起動設定
「Linuxでサービスを起動・停止したいけど、systemctlの使い方がわからない」
「自動起動の設定をしたのに、再起動後にサービスが動いていない」

RHEL7/CentOS7以降のLinuxでは、サービス管理はすべてsystemctlコマンドで行います。以前のservice/chkconfigコマンドに代わる、現代Linuxの必須コマンドです。
この記事では、systemctlの基本操作から、自動起動設定、サービスの状態確認、トラブル対処まで実務で必要な知識を網羅します。

systemctlとは?

systemctlは、systemd(Linuxのシステムおよびサービス管理の仕組み)を操作するためのコマンドです。

RHEL7/CentOS7以降、Ubuntu 16.04以降など、現在主流のLinuxディストリビューションではsystemdが標準で採用されています。以前のSysVinit環境で使っていたservice/chkconfigコマンドは、systemctlに置き換わりました。

旧:service httpd start / chkconfig httpd on
新:systemctl start httpd / systemctl enable httpd

サービスの起動・停止・再起動

1. サービスを起動する(start)

# httpdを起動 sudo systemctl start httpd # nginxを起動 sudo systemctl start nginx

startは即座にサービスを起動しますが、再起動後には反映されません。永続化するにはenableが必要です(後述)。

2. サービスを停止する(stop)

# httpdを停止 sudo systemctl stop httpd

3. サービスを再起動する(restart)

設定ファイルを変更した後など、サービスを再起動して反映させます。

# httpdを再起動(一度停止してから起動) sudo systemctl restart httpd

4. サービスをリロードする(reload)

reloadは、サービスを停止せずに設定ファイルだけを再読み込みします。Webサーバーなど、停止させたくないサービスで使います。

# 設定ファイルだけ再読み込み(サービスは止まらない) sudo systemctl reload httpd # reloadに対応していないサービスもある。その場合はrestartを使う # reload失敗時にrestartにフォールバックする方法 sudo systemctl reload-or-restart httpd

サービスの状態を確認する

1. 詳細なステータスを確認する(status)

最もよく使うサブコマンドです。サービスの稼働状況、PID、最近のログが一覧で表示されます。

systemctl status httpd # 出力例 * httpd.service - The Apache HTTP Server Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; preset: disabled) Active: active (running) since Tue 2026-03-18 10:00:00 JST; 2h ago Main PID: 1234 (httpd) Tasks: 213 Memory: 45.2M CGroup: /system.slice/httpd.service

確認すべきポイントは以下の通りです。

Active: active (running):正常に稼働中
Active: inactive (dead):停止中
Active: failed:起動に失敗
Loaded: enabled:自動起動が有効
Loaded: disabled:自動起動が無効

2. 起動中かどうかだけ確認する(is-active)

スクリプト内で稼働状態を判定する場合に便利です。

systemctl is-active httpd active # スクリプトでの使用例 if systemctl is-active --quiet httpd; then echo "httpdは稼働中です" fi

3. 自動起動が有効かどうか確認する(is-enabled)

systemctl is-enabled httpd enabled

自動起動の設定

1. 自動起動を有効にする(enable)

OS起動時にサービスが自動的に立ち上がるようにします。

# 自動起動を有効にする sudo systemctl enable httpd # enableと同時に今すぐ起動もする(--now) sudo systemctl enable --now httpd

--now オプションを使えば、enable と start を1コマンドで実行できます。サーバー構築時に便利です。

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

# 自動起動を無効にする sudo systemctl disable httpd # 無効化と同時に今すぐ停止する sudo systemctl disable --now httpd

3. サービスの一覧を表示する(list-unit-files)

すべてのサービスの自動起動状態を一覧表示します。

# 全サービスの自動起動状態を表示 systemctl list-unit-files --type=service # enabledのサービスだけ絞り込む systemctl list-unit-files --type=service --state=enabled # 現在稼働中のサービスだけ表示 systemctl list-units --type=service --state=running

応用・実務Tips

1. サービスの起動に失敗した原因を調べる

statusで「failed」と表示された場合、原因を特定するにはjournalctlでログを確認します。

# 該当サービスのログを表示 sudo journalctl -u httpd --no-pager -n 50 # 直近の起動失敗のログだけ確認 sudo journalctl -u httpd --since "10 minutes ago"

2. サービスの依存関係を確認する

あるサービスが別のサービスに依存している場合、依存先が起動していないと起動に失敗します。

# httpdの依存関係を表示 systemctl list-dependencies httpd

3. systemdの設定を再読み込みする(daemon-reload)

ユニットファイル(.serviceファイル)を新規作成したり編集した場合は、daemon-reloadで反映させます。

# ユニットファイルの変更をsystemdに反映 sudo systemctl daemon-reload # その後サービスを再起動 sudo systemctl restart myapp

4. マスクでサービスを完全に無効化する(mask)

disableは自動起動を無効にするだけで、手動でstartすれば起動できます。maskを使うと、手動起動も含めて完全にブロックします。

# サービスを完全に無効化(手動起動もブロック) sudo systemctl mask firewalld # マスクを解除 sudo systemctl unmask firewalld

誤って起動されては困るサービス(テスト環境でのfirewalld等)に使います。

トラブルシュート・エラー対処

「Failed to start」でサービスが起動しない場合

# 1. statusで状態とエラーメッセージを確認 sudo systemctl status httpd # 2. journalctlで詳細ログを確認 sudo journalctl -u httpd -n 30 --no-pager # 3. 設定ファイルの構文チェック(Apache/Nginxの場合) httpd -t nginx -t

よくある原因は、設定ファイルの記述ミス、ポートの競合(既に別プロセスが使用中)、パーミッション不足です。

「enableしたのに再起動後にサービスが動いていない」場合

# is-enabledで自動起動の設定を確認 systemctl is-enabled httpd # enabledなのに起動していない場合はログを確認 sudo journalctl -b -u httpd

-b オプションで今回の起動(ブート)以降のログだけを表示できます。起動時にエラーが発生していないかを確認してください。

旧コマンド(service/chkconfig)との対応表

旧コマンド systemctlコマンド
service httpd start sudo systemctl start httpd
service httpd stop sudo systemctl stop httpd
service httpd restart sudo systemctl restart httpd
service httpd status systemctl status httpd
chkconfig httpd on sudo systemctl enable httpd
chkconfig httpd off sudo systemctl disable httpd
chkconfig --list systemctl list-unit-files --type=service

本記事のまとめ

やりたいこと コマンド
サービスを起動する sudo systemctl start サービス名
サービスを停止する sudo systemctl stop サービス名
サービスを再起動する sudo systemctl restart サービス名
設定ファイルを再読み込みする sudo systemctl reload サービス名
サービスの状態を確認する systemctl status サービス名
自動起動を有効にする sudo systemctl enable サービス名
自動起動を有効にして今すぐ起動する sudo systemctl enable --now サービス名
自動起動を無効にする sudo systemctl disable サービス名
サービス一覧を表示する systemctl list-unit-files --type=service
サービスを完全に無効化する sudo systemctl mask サービス名

サービス管理だけで終わらせていませんか?

systemctlによるサービス管理はサーバー運用の基本ですが、本番環境ではファイアウォール設定やログ管理、セキュリティ対策まで一通りの知識が求められます。
ネットの切れ端の情報をコピペするだけでなく、現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、『Linuxサーバー構築入門マニュアル(図解60P)』を完全無料でプレゼントしています。

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



無料プレゼント
図解60p「Linuxサーバー構築入門マニュアル」
独学で詰まる前に、“型(手順書)”で最初の環境構築をサクッと終わらせましょう。
登録10秒/自動返信でDL/合わなければ解除3秒
無料で受け取る ※メールアドレスだけでもOK(必須項目は最小限)

宮崎 智広

この記事を書いた人

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

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

図解60pのLinux無料マニュアル
登録10秒/自動返信でDL
無料で受け取る