本文へスキップ

systemctlとは?Linuxのサービス管理を未経験向けに解説

#systemctl#Linux#サービス管理#初心者#未経験

「サービスを再起動しておいて」と言われて、コマンドが思い浮かばず固まった――未経験からインフラエンジニアを目指す人なら一度は通る壁です。結論から言うと、systemctlはLinuxで「サービスを起動・停止・再起動する」ための標準コマンドで、押さえるべき操作は数個に絞られます。この記事では、systemctlが何を管理しているのかという仕組みの部分から、未経験者が最初に覚えるべき操作までを順番に整理します。

1つの操作パネルから複数のサービスの起動・停止をまとめて管理しているイメージ

systemctlとは何をするコマンドか

systemctl(システムコントロール)は、Linuxでサービス(バックグラウンドで動き続けるプログラム)を管理するためのコマンドです。Webサーバーやデータベースなど、常に起動していてほしいプログラムの起動・停止・状態確認をまとめて行える窓口だとイメージすると分かりやすくなります。

systemctlは「systemd」という仕組みの一部です。systemdはLinuxが起動したときに、必要なサービスを決まった順番で立ち上げる役割を持っており、systemctlはそのsystemdに指示を出すためのコマンド、という関係になっています。細部を丸暗記する必要はなく、「サービスを管理する窓口がsystemctl」という位置づけだけ押さえれば十分です。

systemctlコマンドからsystemdを通じて対象のサービスが操作される流れ

サービスという考え方を理解する

未経験のうちは「サービス」という言葉がピンとこないかもしれません。サービスとは、画面を持たずにバックグラウンドで動き続け、リクエストが来たら処理を返すプログラムのことです。たとえばWebサーバーのソフトウェアは、起動しておけばブラウザからのアクセスをいつでも受け付けられる状態を保っています。

現場でよく登場するサービスには、次のようなものがあります。

  • Webサーバー: nginxやApacheなど、リクエストを受けてページを返すサービス
  • データベース: MySQLやPostgreSQLなど、データの保存と取り出しを担当するサービス
  • SSH: 遠隔からサーバーに接続するためのサービス(詳しくはSSHとはでも解説しています)

これらのサービスが正しく起動しているかを確認し、必要に応じて操作するのがsystemctlの役目です。

最初に覚えるべき操作

現役でインフラの現場にいる立場から言うと、新人のうちにsystemctlでつまずく人の多くは、状態を変える操作と自動起動の設定を混同しています。覚える操作は大きく3つに分けられ、意味とセットで覚えておくと現場でも迷いにくくなります。

  1. 状態確認: systemctl status サービス名 で、今そのサービスが動いているかどうかを確認する
  2. 起動・停止・再起動: systemctl start systemctl stop systemctl restart で、サービスの状態を切り替える
  3. 自動起動の設定: systemctl enable systemctl disable で、サーバー再起動後にそのサービスを自動で立ち上げるかどうかを決める

ポイントは、startやrestartは「今この瞬間」の状態を変える操作、enableやdisableは「次回サーバーが起動したとき」の挙動を決める設定だという違いです。この2つを混同すると、再起動後にサービスが動いていないという事故につながります。コマンドの意味を意識しながら打つ習慣は、Linuxコマンドは暗記しないで紹介している学び方とも共通しています。

つまずきやすいポイントとその対処

systemctlの操作でよく詰まる場面と、原因の候補を整理しておきます。

よくある状況主な原因の候補
statusがfailedと表示される設定ファイルの記述ミス、必要なポートが他のプロセスに使われている
restartしても反映されない設定ファイルを直した後にreloadやrestartを忘れている
Permission deniedと表示される一般ユーザーのまま実行していて、管理者権限(sudo)が必要な操作になっている

サービスがfailedになったときは、原因をコマンドの結果だけで判断せず、ログを読んで切り分ける作業とセットになります。ログの読み方はログ調査のやり方で詳しく解説しているので、あわせて確認しておくと障害対応の流れがつながって理解しやすくなります。

systemctlを学ぶ意味と現場での使われ方

監視運用の現場では、アラートを受けて「対象のサービスが止まっていないか」を確認するところから対応が始まることが多く、systemctlはその最初の一手として使う場面が非常に多いコマンドです。逆に言えば、systemctlの基本操作を押さえておくだけで、初動対応にかなり自信が持てるようになります。

InfraDojoなら、実際にサーバーを操作しながらsystemctlの練習ができる環境が用意されており、サービスを止めても壊しても心配のない状態で何度も試せます。Linuxの基礎から順番に固めたい場合は、学習ロードマップから進めるのがおすすめです。

よくある質問

Q. systemctlとserviceコマンドはどちらを覚えるべきですか

現在の主要なLinuxディストリビューションはsystemdを採用しているため、systemctlを中心に覚えておけば実務でも困りにくいです。古い環境ではserviceコマンドが使われている場合もあるため、名前だけ知っておくと戸惑いにくくなります。

Q. サービスの一覧はどうやって確認しますか

systemctl list-units --type=service を実行すると、現在動いているサービスの一覧を確認できます。まずは自分の環境で何が動いているかを眺めてみると、サービスという概念のイメージがつかみやすくなります。

Q. systemctlの操作を間違えてサービスを止めてしまったらどうすればいいですか

慌てずに systemctl start サービス名 で起動し直せば元の状態に戻せることがほとんどです。壊れることを恐れて操作を避けるより、練習環境で一度止めて起動し直す経験をしておくほうが、現場での落ち着いた対応につながります。

Reo|インフラエンジニアのアイコン

この記事を書いた人: InfraDojo運営者(Reo|インフラエンジニア)

現役インフラエンジニア。SESの現場経験に基づき、未経験からのインフラ転職と学習を支援しています。InfraDojoは、ブラウザ上のターミナルで実際に手を動かして学べるインフラ学習サイトです。

@Reo_engineer_

読むだけで終わらせず、今日から手を動かす

InfraDojoは、ブラウザを開くだけでLinux・ネットワーク・AWSの演習ができる学習サイトです。登録は30秒、最初のコースは無料です。