systemctlコマンドの使い方を完全解説!Linuxサービスの起動・停止・自動起動設定の基本
生徒
「Linuxでプログラムを動かし続けるにはどうしたらいいですか?パソコンを再起動しても勝手に動き出すようにしたいんです。」
先生
「それなら『systemctl(システムコントロール)』というコマンドを使うのが一番ですよ。Linuxのシステム全体を管理する司令塔のような役割を持っています。」
生徒
「システムコントロール……なんだか難しそうですね。私のような初心者でも操作できるんでしょうか?」
先生
「使い方はとてもシンプルです。『動かす』『止める』『状態を見る』といった基本的な言葉を組み合わせるだけですから。一つずつ丁寧に解説しますね。」
1. systemctlコマンドとは?
Linuxの世界では、目に見えないところで動いているプログラムのことを「サービス」や「デーモン」と呼びます。たとえば、Webサイトを表示するためのソフト(ApacheやNginx)や、ファイルをやり取りするためのソフトなどがこれにあたります。
systemctlコマンドは、これらのサービスを管理(起動・停止・状態確認など)するための魔法の言葉です。Windowsでいうところの「タスクマネージャー」のサービス管理画面を、黒い画面(ターミナル)から操作するものだとイメージしてください。
今の主流であるLinux(Ubuntu, CentOS, Debianなど)の多くは、systemd(システムディー)という仕組みを使ってシステムを動かしています。このsystemdを操作する専用の道具が、今回の主役であるsystemctlなのです。
2. systemdという「管理責任者」の仕組み
初心者の方向けに、Linuxの内部を会社に例えてみましょう。Linuxという会社には、たくさんの「部署(サービス)」があります。Web部、メール部、データベース部などです。
昔のLinuxでは、それぞれの部署に個別に連絡して「働いてください」と頼んでいました。しかし、今のLinuxにはsystemdという「超優秀な管理責任者」がいます。私たちはこの管理責任者に「Web部を動かして!」と伝えるだけで、後はすべて任せることができます。
この管理責任者(systemd)に指示を出すためのマイクがsystemctlコマンドです。これを使うことで、複雑なシステムの動きをたった一行の命令でコントロールできるようになります。システムの起動順序や、もしプログラムが壊れて止まってしまった時の自動復旧なども、この仕組みが裏側で支えてくれているのです。
3. サービスの動かし方(start)と止め方(stop)
まずは基本中の基本、サービスを動かしたり止めたりする方法を学びましょう。Linuxをサーバーとして使う際、最も頻繁に使う操作です。
サービスを動かすにはstart、止めるにはstopを使います。ただし、システムの設定を変更する操作なので、通常は「管理者権限(root)」が必要です。そのため、コマンドの先頭にsudoを付けて実行します。
例えば、Webサーバーである「apache2」という名前のサービスを起動・停止する場合は以下のようになります。
sudo systemctl start apache2
上記のコマンドを実行しても、画面には何も表示されません。Linuxでは「何も表示されない=成功」を意味することが多いです。逆に、サービスを止めたいときは以下のように入力します。
sudo systemctl stop apache2
これで、動いていたWebサーバーを安全に終了させることができました。一時的にメンテナンスをしたいときなどに使います。
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)
「パソコンの電源を入れるたびに、毎回コマンドを打つのは面倒だな……」と思いますよね。そこで便利なのが「自動起動設定」です。これを使えば、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)の違い
設定ファイルを書き換えたときなど、サービスを一度リセットしたい場面があります。その際に使うのがrestartとreloadです。初心者の方は混同しやすいので、しっかり違いを理解しましょう。
- restart: サービスを一度完全に終了させてから、もう一度新しく起動します。プログラム全体をやり直すイメージです。
- reload: サービスは動かしたまま、設定ファイルの中身だけを読み込み直します。サービスを止めたくない場合に有効です。
基本的にはrestartを使えば確実ですが、Webサイトへのアクセスを途切れさせたくないプロの現場ではreloadが好まれます。
sudo systemctl restart apache2
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)という考え方
systemctlを使っていると「ユニット(Unit)」という言葉によく出会います。Linux初心者には聞き慣れない言葉ですが、これはsystemdが管理する対象の総称です。
サービス(プログラム)だけでなく、ハードウェアのデバイスや、マウント(ディスクの接続)、タイマー(決まった時間に実行する仕組み)なども、すべて「ユニット」という共通の形式で管理されています。私たちはこれまで「サービス」を操作してきましたが、実は「サービスユニット」を操作していたわけです。名前の最後に.serviceと付いているのはそのためです。
この「何でもユニットとして同じルールで扱う」という統一感のおかげで、Linuxの管理は非常に整理されています。難しく考えず、「systemdという管理者が扱うカードの一枚一枚がユニットなんだな」と思えば大丈夫です。
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. 覚えておきたい基本操作の早見表
最後に、よく使う命令をテーブル(表)にまとめました。これさえ覚えておけば、日常のLinux操作で困ることはありません。パソコンのメモ帳に貼っておくと便利ですよ!
| 命令(コマンド) | 何をするためのもの? | 管理者権限(sudo) |
|---|---|---|
| start | サービスを今すぐ起動する | 必要 |
| stop | サービスを今すぐ停止する | 必要 |
| restart | サービスを再起動する | 必要 |
| status | 現在の動いている状態を確認する | 不要 |
| enable | パソコン起動時に自動で動くようにする | 必要 |
| disable | 自動起動の設定を解除する | 必要 |
| is-active | 動いているかどうかだけを簡潔に答える | 不要 |
最初はコマンドを打つのに勇気がいりますが、間違えてもパソコンが爆発することはありません。まずは自分の管理しているサービスの状態をstatusで覗いてみるところから始めてみましょう!