カテゴリ: Linux 更新日: 2026/04/08

systemctlコマンドの使い方を完全解説!Linuxサービスの起動・停止・自動起動設定の基本

Linuxでsystemctlコマンドとは?基本的な考え方
Linuxでsystemctlコマンドとは?基本的な考え方

先生と生徒の会話形式で理解しよう

生徒

「Linuxでプログラムを動かし続けるにはどうしたらいいですか?パソコンを再起動しても勝手に動き出すようにしたいんです。」

先生

「それなら『systemctl(システムコントロール)』というコマンドを使うのが一番ですよ。Linuxのシステム全体を管理する司令塔のような役割を持っています。」

生徒

「システムコントロール……なんだか難しそうですね。私のような初心者でも操作できるんでしょうか?」

先生

「使い方はとてもシンプルです。『動かす』『止める』『状態を見る』といった基本的な言葉を組み合わせるだけですから。一つずつ丁寧に解説しますね。」

1. systemctlコマンドとは?

1. systemctlコマンドとは?
1. systemctlコマンドとは?

Linuxの世界では、目に見えないところで動いているプログラムのことを「サービス」「デーモン」と呼びます。たとえば、Webサイトを表示するためのソフト(ApacheやNginx)や、ファイルをやり取りするためのソフトなどがこれにあたります。

systemctlコマンドは、これらのサービスを管理(起動・停止・状態確認など)するための魔法の言葉です。Windowsでいうところの「タスクマネージャー」のサービス管理画面を、黒い画面(ターミナル)から操作するものだとイメージしてください。

今の主流であるLinux(Ubuntu, CentOS, Debianなど)の多くは、systemd(システムディー)という仕組みを使ってシステムを動かしています。このsystemdを操作する専用の道具が、今回の主役であるsystemctlなのです。

2. systemdという「管理責任者」の仕組み

2. systemdという「管理責任者」の仕組み
2. systemdという「管理責任者」の仕組み

初心者の方向けに、Linuxの内部を会社に例えてみましょう。Linuxという会社には、たくさんの「部署(サービス)」があります。Web部、メール部、データベース部などです。

昔のLinuxでは、それぞれの部署に個別に連絡して「働いてください」と頼んでいました。しかし、今のLinuxにはsystemdという「超優秀な管理責任者」がいます。私たちはこの管理責任者に「Web部を動かして!」と伝えるだけで、後はすべて任せることができます。

この管理責任者(systemd)に指示を出すためのマイクがsystemctlコマンドです。これを使うことで、複雑なシステムの動きをたった一行の命令でコントロールできるようになります。システムの起動順序や、もしプログラムが壊れて止まってしまった時の自動復旧なども、この仕組みが裏側で支えてくれているのです。

3. サービスの動かし方(start)と止め方(stop)

3. サービスの動かし方(start)と止め方(stop)
3. サービスの動かし方(start)と止め方(stop)

まずは基本中の基本、サービスを動かしたり止めたりする方法を学びましょう。Linuxをサーバーとして使う際、最も頻繁に使う操作です。

サービスを動かすにはstart、止めるにはstopを使います。ただし、システムの設定を変更する操作なので、通常は「管理者権限(root)」が必要です。そのため、コマンドの先頭にsudoを付けて実行します。

例えば、Webサーバーである「apache2」という名前のサービスを起動・停止する場合は以下のようになります。


sudo systemctl start apache2

上記のコマンドを実行しても、画面には何も表示されません。Linuxでは「何も表示されない=成功」を意味することが多いです。逆に、サービスを止めたいときは以下のように入力します。


sudo systemctl stop apache2

これで、動いていたWebサーバーを安全に終了させることができました。一時的にメンテナンスをしたいときなどに使います。

4. 今の状態を確認する(status)

4. 今の状態を確認する(status)
4. 今の状態を確認する(status)

サービスを起動したあと、「本当にちゃんと動いているかな?」と不安になることがありますよね。そんな時に使うのがstatusです。これは管理者権限がなくても実行できるため、一般ユーザーとして確認してみましょう。


systemctl status apache2
● apache2.service - The Apache HTTP Server
     Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
     Active: active (running) since Fri 2026-01-09 10:00:00 JST; 5min ago
   Main PID: 1234 (apache2)
      Tasks: 55 (limit: 4653)

結果の中にActive: active (running)という文字があれば、そのサービスは元気に動いています。もしinactive (dead)と書いてあれば、それはお休み中(停止中)ということです。エラーが起きている場合は、ここに赤い文字で原因が表示されることもあるので、トラブル解決の第一歩として非常に重要なコマンドです。

5. パソコン起動時に自動で動かす(enable / disable)

5. パソコン起動時に自動で動かす(enable / disable)
5. パソコン起動時に自動で動かす(enable / disable)

「パソコンの電源を入れるたびに、毎回コマンドを打つのは面倒だな……」と思いますよね。そこで便利なのが「自動起動設定」です。これを使えば、Linuxが立ち上がると同時にサービスも勝手に動き出します。

自動起動を有効にするにはenable、やめたいときはdisableを使います。これも設定変更なのでsudoが必要です。


sudo systemctl enable apache2
Created symlink /etc/systemd/system/multi-user.target.wants/apache2.service → /lib/systemd/system/apache2.service.

「Created symlink(シンボリックリンクを作成しました)」という難しいメッセージが出ますが、これは「自動起動の予約リストに登録したよ!」という意味なので安心してください。逆に、自動起動を解除したいときは以下のようにします。


sudo systemctl disable apache2
Removed /etc/systemd/system/multi-user.target.wants/apache2.service.

これで、次にパソコンを再起動したときには、そのサービスは自動的には動き出さなくなります。

6. サービスの再起動(restart)と設定反映(reload)の違い

6. サービスの再起動(restart)と設定反映(reload)の違い
6. サービスの再起動(restart)と設定反映(reload)の違い

設定ファイルを書き換えたときなど、サービスを一度リセットしたい場面があります。その際に使うのがrestartreloadです。初心者の方は混同しやすいので、しっかり違いを理解しましょう。

  • restart: サービスを一度完全に終了させてから、もう一度新しく起動します。プログラム全体をやり直すイメージです。
  • reload: サービスは動かしたまま、設定ファイルの中身だけを読み込み直します。サービスを止めたくない場合に有効です。

基本的にはrestartを使えば確実ですが、Webサイトへのアクセスを途切れさせたくないプロの現場ではreloadが好まれます。


sudo systemctl restart apache2

7. サービスの一覧を表示して全体を把握する

7. サービスの一覧を表示して全体を把握する
7. サービスの一覧を表示して全体を把握する

自分のパソコンでどんなサービスが登録されているのか、一覧で見たいときはlist-unit-filesを使います。これは、インストールされているすべてのサービスの「名簿」を見るようなものです。


systemctl list-unit-files --type=service
UNIT FILE                                  STATE           VENDOR PRESET
apache2.service                            enabled         enabled      
cron.service                               enabled         enabled      
dbus.service                               static          -            
getty@.service                             enabled         enabled      
networking.service                         enabled         enabled

STATEの列を見ると、enabled(自動起動する)かdisabled(自動起動しない)かが一目でわかります。多すぎて画面が埋まってしまうときは、キーボードの「q」を押すと元の画面に戻れます。

8. ユニット(Unit)という考え方

8. ユニット(Unit)という考え方
8. ユニット(Unit)という考え方

systemctlを使っていると「ユニット(Unit)」という言葉によく出会います。Linux初心者には聞き慣れない言葉ですが、これはsystemdが管理する対象の総称です。

サービス(プログラム)だけでなく、ハードウェアのデバイスや、マウント(ディスクの接続)、タイマー(決まった時間に実行する仕組み)なども、すべて「ユニット」という共通の形式で管理されています。私たちはこれまで「サービス」を操作してきましたが、実は「サービスユニット」を操作していたわけです。名前の最後に.serviceと付いているのはそのためです。

この「何でもユニットとして同じルールで扱う」という統一感のおかげで、Linuxの管理は非常に整理されています。難しく考えず、「systemdという管理者が扱うカードの一枚一枚がユニットなんだな」と思えば大丈夫です。

9. 困った時のトラブルシューティング

9. 困った時のトラブルシューティング
9. 困った時のトラブルシューティング

もしsystemctl startをしてもエラーが出て動かないときは、どうすればよいでしょうか。まずは前述のstatusコマンドで詳細を確認します。それでも原因がわからない場合は、システム全体のログ(記録帳)を確認するjournalctlという仲間のコマンドを使います。


journalctl -u apache2
-- Logs begin at Thu 2026-01-08 12:00:00 JST, end at Fri 2026-01-09 10:30:00 JST. --
Jan 09 10:05:00 localhost systemd[1]: Starting The Apache HTTP Server...
Jan 09 10:05:01 localhost apache2[1234]: (98)Address already in use: AH00072: make_sock: could not bind to address [::]:80
Jan 09 10:05:01 localhost systemd[1]: apache2.service: Main process exited, code=exited, status=1/FAILURE

このように、エラーメッセージが詳しく表示されます。このメッセージをコピーしてインターネットで検索すれば、解決策がすぐに見つかるはずです。systemctlとjournalctlは、Linux管理において「最強のコンビ」と言えます。

10. 覚えておきたい基本操作の早見表

10. 覚えておきたい基本操作の早見表
10. 覚えておきたい基本操作の早見表

最後に、よく使う命令をテーブル(表)にまとめました。これさえ覚えておけば、日常のLinux操作で困ることはありません。パソコンのメモ帳に貼っておくと便利ですよ!

命令(コマンド) 何をするためのもの? 管理者権限(sudo)
start サービスを今すぐ起動する 必要
stop サービスを今すぐ停止する 必要
restart サービスを再起動する 必要
status 現在の動いている状態を確認する 不要
enable パソコン起動時に自動で動くようにする 必要
disable 自動起動の設定を解除する 必要
is-active 動いているかどうかだけを簡潔に答える 不要

最初はコマンドを打つのに勇気がいりますが、間違えてもパソコンが爆発することはありません。まずは自分の管理しているサービスの状態をstatusで覗いてみるところから始めてみましょう!

カテゴリの一覧へ
新着記事
New1
EC2(仮想サーバ)
AWS EC2のモニタリング(CloudWatchの使い方)を初心者向けにやさしく解説
New2
Global Accelerator
AWS Global AcceleratorでIPv4・IPv6対応を行う方法を初心者向けにやさしく解説
New3
VPC(プライベートクラウド)
AWS VPCピアリングの設定方法と活用シーンを初心者向けにわかりやすく解説!
New4
ログ管理・トラブルシュート
Linuxのログ管理・トラブルシュート入門!ログとは何か?仕組みと役割を徹底解説
人気記事
No.1
Java&Spring記事人気No1
S3(オブジェクトストレージ)
AWS S3の料金体系をわかりやすく解説
No.2
Java&Spring記事人気No2
RDS(データベース)
AWS RDSのメンテナンスウィンドウの設定方法を解説!初心者でもできるクラウドデータベースの管理
No.3
Java&Spring記事人気No3
プロセス・ジョブ管理
LinuxのプロセスID(PID)とは?仕組みと管理方法を初心者向けに徹底解説
No.4
Java&Spring記事人気No4
RDS(データベース)
AWS RDSのスナップショットを手動で作成・復元する方法を初心者向けにやさしく解説!
No.5
Java&Spring記事人気No5
Linux ディストリビューション
Linux Mintとは何か?初心者に人気な理由と使い方を徹底解説
No.6
Java&Spring記事人気No6
VPC(プライベートクラウド)
AWS VPCでNATゲートウェイを構成してプライベートサブネットから外部アクセスする方法を初心者向けに解説!
No.7
Java&Spring記事人気No7
ELB(ロードバランサー)
AWSのApplication Load Balancer(ALB)の仕組みと構成方法を徹底解説!初心者向けロードバランサー入門
No.8
Java&Spring記事人気No8
ELB(ロードバランサー)
AWS ELBの料金体系とコスト最適化の考え方を初心者向けに徹底解説!