【完全版】systemctlのコマンド一覧|実例付きで徹底解説

※本サイトにはプロモーション・広告が含まれています。

(最終更新月:2023年5月)

✔このような方へ向けて書かれた記事となります

「systemctlって何ができるのだろうか?」

「systemctlの使い方が知りたい」

「systemctlの具体例を見せてほしい」

✔当記事を通じてお伝えすること

  • systemctlとは?
  • systemctlの基本・書き方
  • systemctlの実例

当記事では、systemctlの基本的な書き方はもちろん、その実例や場面別の役立つケースなどについても詳しく解説しています。

ぜひ最後までご覧ください。

筆者プロフィール

筆者プロフィールアイコン

【現職】プロダクトマネージャー

【副業】ブログ(月間20万PV)/YouTube/Web・アプリ制作

「プログラミング × ライティング × 営業」の経験を活かし、30後半からのIT系職へシフト。現在はプロダクトマネージャーとして、さまざまな関係者の間に入り奮闘してます。当サイトでは、実際に手を動かせるWebアプリの開発を通じて、プログラミングはもちろん、IT職に必要な情報を提供していきます。

【当ブログで紹介しているサイト】

当サイトチュートリアルで作成したデモ版日報アプリ

Django × Reactで開発したツール系Webアプリ

✔人に見せても恥ずかしくないコードを書こう

「リーダブルコード」は、わかりやすく良いコードの定義を教えてくれる本です。

  • 見るからにきれいなコードの書き方
  • コードの分割方法
  • 変数や関数の命名規則

エンジニアのスタンダートとすべき基準を一から解説しています。

何回も読むのに値する本なので、ぜひ手にとって読んでみてください。

systemctlのコマンド一覧

こちらはコマンドの一覧です。

何ができるかを知りたい人はこちらをどうぞ。

詳しく中身を知りたい方は次章以降を読み進めてください。

カテゴリコマンド説明
サービス管理用sudo systemctl start [サービス名]サービスの開始
sudo systemctl stop [サービス名]サービスの停止
sudo systemctl restart [サービス名]サービスの再起動
システム管理用sudo systemctl rebootシステムの再起動
sudo systemctl poweroffシステムのシャットダウン
ログ管理用sudo journalctl全ログの表示
sudo journalctl -u [サービス名]特定のサービスのログ表示
sudo journalctl -f最新のログ表示

systemctlを理解するための前提知識

systemctlを理解するためには以下のことを知っておきましょう。

概要を理解すれば、使い方をスムーズに覚えられます。

  • Linuxとシステム管理
  • systemdとsystemctlの概要
  • systemdの役割
  • systemdのメリット
  • systemdと従来のinitシステムの違い

Linuxとシステム管理

Linuxはオープンソースのオペレーティングシステムで、サーバーやデスクトップ環境で幅広く利用されています。

Linuxシステム管理では、コンピュータの運用に必要な、以下のタスクを実行します。

  • アプリケーションやデーモン(バックグラウンドで実行されるプログラム)などのサービスの起動や停止
  • システムの状態確認
  • ログの分析
  • セキュリティの強化

例えば、WebサーバーのApacheやデータベースのMySQLを管理する場合、それらのサービスをいつ開始・停止するか、どのように監視・管理するかがLinuxシステム管理の一部となります。

systemdとsystemctlの概要

systemdはLinuxで利用されるデファクトスタンダードな初期化システムで、システムの起動時に各種サービスを立ち上げる役割を担います。

systemctlは、systemdの制御や管理のためのコマンドラインツールで、サービスの起動・停止・再起動や状態確認など、さまざまな操作ができるものです。

systemdの役割

具体的にsystemdがおこなうことはこちら。

  • Linuxシステムの初期化
  • サービス管理
  • ログ管理

systemdの役割は、”ユニット”と呼ばれる設定ファイルを読み込み、各種サービスやタスクを適切な順序で起動・管理することです。

ユニットにはサービス(service)、タイマー(timer)、ソケット(socket)などが含まれ、それぞれが特定の機能を果たしています。

例えばSSHサーバーを起動する場合、sshd.serviceというユニットが存在し、systemdはこのユニットを使用してSSHサーバーを管理しているのです。

systemdのメリット

systemdは従来のinitシステムに比べて、以下のようなメリットがあります。

  • 起動速度の向上: 依存関係を解決し、同時並行でサービスを起動
  • サービス管理の柔軟性: サービスの再起動やデーモンの再ロードが容易
  • 依存関係の自動解決: サービス間の依存関係を自動的に検出し、必要な順序で起動

systemdと従来のinitシステムの違い

従来のinitシステム(System V initやUpstartなど)は、シェルスクリプトを用いてシステム起動時のサービスを順序立てて実行していました。

これに対して、systemdはバイナリ形式のユニットファイルを使用し、依存関係を明確に表現できます。

また、systemdはシステム全体の状態管理を一元化し、より効率的なシステム管理が可能となっています。

systemctlの基本的な使い方

systemctlの基本的な使い方を確認していきます。

まずは構文やその開始方法などを覚えましょう。

  • systemctlコマンドの構文
  • サービスの開始、停止、再起動
  • サービスの状態確認
  • システムの再起動とシャットダウン

systemctlコマンドの構文

systemctlの基本的なコマンド構文は以下の通りです。

systemctl [オプション] [コマンド] [ユニット名]

サービスの開始、停止、再起動

systemctlを使って、サービスの開始、停止、再起動ができます。

以下は、Apacheウェブサーバー(httpdサービス)の例です。

#サービスの開始
sudo systemctl start httpd

#サービスの停止
sudo systemctl stop httpd

#サービスの再起動
sudo systemctl restart httpd

サービスの状態確認

systemctlを使って、サービスの状態を確認できます。

以下のコマンドで、httpdサービスの状態を表示します。

sudo systemctl status httpd

システムの再起動とシャットダウン

systemctlでは、システム全体の再起動やシャットダウンも行えます。

#システムの再起動
sudo systemctl reboot

#システムのシャットダウン
sudo systemctl poweroff

systemctlのオプション一覧

こちらはオプションの一覧です。

できることはたくさんあるので、ぜひ参考にしてください。

オプション名説明
–all, -aすべてのユニットを一覧表示するsudo systemctl list-units –all
–type, -t指定したユニットタイプに絞り込んで一覧表示するsudo systemctl list-units –type=service
–state, -l指定した状態のユニットに絞り込んで一覧表示するsudo systemctl list-units –state=running
–failed, -f起動に失敗したユニットを一覧表示するsudo systemctl –failed
–no-pager, -P出力をページャーを使わずに表示するsudo systemctl list-units –no-pager
–user, -uユーザーモードでコマンドを実行するsystemctl –user list-units
–system, -Sシステムモードでコマンドを実行するsudo systemctl –system list-units
–global, -Gグローバル設定に対してコマンドを実行するsudo systemctl –global daemon-reload
–quiet, -q出力を最小限に抑えるsudo systemctl –quiet start my_service
–now, -nサービスの有効化・無効化と同時に、即時起動・停止するsudo systemctl enable –now my_service
–root, -r指定したルートディレクトリを基準にコマンドを実行するsudo systemctl –root=/mnt list-units
–job-mode, -Mジョブモードを指定してコマンドを実行するsudo systemctl start –job-mode=replace apache

インストールと設定

もしsystemdとsystemctlのインストールがされていない方は、以下の方法でインストールしましょう。

  • 必要なパッケージのインストール
  • 環境設定と初期設定

必要なパッケージのインストール

多くのLinuxディストリビューションでは、systemdとsystemctlがデフォルトでインストールされています。

もし、インストールされていない場合は、ディストリビューションのパッケージマネージャーを使ってインストールします。

例えば、UbuntuやDebianでは`apt`コマンド、CentOSやFedoraでは`dnf`コマンドを使用してインストールできます。

環境設定と初期設定

systemdは、/etc/systemd/systemディレクトリ内にあるユニットファイルを読み込むことで、サービスの設定をおこないます。

これらのファイルを編集することで、サービスの挙動や依存関係を変更できます。

また、ユーザーが作成したカスタムユニットファイルは、/etc/systemd/systemディレクトリ内に配置します。

サービスの管理

こちらは各サービスを有効化する方法です。

  • サービスの有効化と無効化
  • サービスのリスト表示と検索
  • サービスの作成と編集

サービスの有効化と無効化

systemctlを使って、サービスの自動起動設定を有効化・無効化できます。

以下のコマンドで、httpdサービスを自動起動に設定・解除します。

#サービスの有効化
sudo systemctl enable httpd

#サービスの無効化
sudo systemctl disable httpd

サービスのリスト表示と検索

systemctlを使って、システム上の全サービスのリストを表示し、特定のサービスを検索できます。

#サービスのリスト表示
sudo systemctl list-units --type=service

#サービスの検索
sudo systemctl list-units --type=service | grep [検索キーワード]

サービスの作成と編集

systemdユニットファイルを作成・編集することで、カスタムサービスを作成・管理できます。

ユニットファイルは通常、/etc/systemd/systemディレクトリに置かれます

以下は、簡単なカスタムサービス(my_service.service)を作成する手順です。

  1. ユニットファイルを作成
  2. ファイルへの記述
  3. ファイルを保存
  4. systemdに変更を通知
  5. サービスを有効化

1. ユニットファイルを作成

sudo nano /etc/systemd/system/my_service.service

2. ファイルへの記述

[Unit]
Description=My Custom Service

[Service]
ExecStart=/path/to/your/executable

[Install]
WantedBy=multi-user.target

ここで、`/path/to/your/executable`は、実行したいプログラムのパスに置き換えてください。

3. ファイルを保存

保存して終了します。

4. systemdにユニットファイルの変更を通知

sudo systemctl daemon-reload

5. サービスを有効化

有効化後に起動しています。

sudo systemctl enable my_service
sudo systemctl start my_service

タイマーの管理

タイマーの管理もできます。

以下がその方法です。

  • タイマーの作成と編集
  • タイマーの有効化と無効化
  • タイマーの一覧表示と状態確認

タイマーの作成と編集

systemdのタイマー機能を使って、定期的なタスクを実行できます。

タイマーは、対応するサービスとセットで作成されます。

  1. タイマー用ファイルの作成
  2. ファイルへの記述
  3. サービスのユニットファイルを作成
  4. ファイルを保存・終了
  5. systemdに変更の通知
  6. タイマーを有効化

1. タイマー用ファイルの作成

タイマー用のユニットファイル(my_timer.timer)を作成: 

sudo nano /etc/systemd/system/my_timer.timer

2. ファイルへの記述

ファイルに以下の内容を記述します。

[Unit]
Description=My Custom Timer

[Timer]
OnCalendar=*-*-* 12:00:00
Unit=my_timer.service

[Install]
WantedBy=timers.target

これは、毎日正午に`my_timer.service`を実行する設定です。

3. サービスのユニットファイルを作成

タイマーに対応するサービスのユニットファイル(my_timer.service)を作成し、実行内容を記述します。

4.ファイルを保存・終了

ファイルを保存して終了します。

5. systemdに変更の通知

systemdにユニットファイルの変更を通知

sudo systemctl daemon-reload

6. タイマーを有効化

タイマーを有効化し、起動します。

sudo systemctl enable my_timer.timer
sudo systemctl start my_timer.timer

タイマーの有効化と無効化

タイマーの自動起動設定を有効化・無効化できます。

以下のコマンドで、my_timerタイマーを自動起動に設定・解除します。

#タイマーの有効化
sudo systemctl enable my_timer.timer

#タイマーの無効化
sudo systemctl disable my_timer.timer

タイマーの一覧表示と状態確認

systemctlを使って、システム上の全タイマーのリストを表示し、特定のタイマーの状態を確認できます。

#タイマーのリスト表示
sudo systemctl list-timers

#タイマーの状態確認
sudo systemctl status my_timer.timer

システムの状態とログの確認

システム全体やログを確認する方法です。

  • システム全体の状態確認
  • ユニットの状態確認
  • システムのログ確認方法

システム全体の状態確認

systemctlを使って、システム全体の状態を確認できます。以下のコマンドでシステムの状態を表示します。

sudo systemctl list-units

ユニットの状態確認

systemctlを使って、特定のユニット(サービス、タイマーなど)の状態を確認できます。以下のコマンドで、my_serviceサービスの状態を表示します。

sudo systemctl status my_service.service

システムのログ確認方法

systemdでは、システムのログを一元管理するために、`journalctl`コマンドを提供しています。以下のように、ログを確認できます。

#全ログの表示
sudo journalctl

#特定のサービスのログ表示
sudo journalctl -u my_service.service

#最新のログ表示
sudo journalctl -f

セキュリティとベストプラクティス

セキュリティ上、気をつけておかなければならないことも見ておきましょう。

システムに直接働きかけるコマンドでは注意が必要です。

  • セキュリティ上の注意点
  • ベストプラクティスと推奨設定

セキュリティ上の注意点

systemdとsystemctlを使用する際、以下のセキュリティ上の注意点を押さえておくことが重要です。

  • ユニットファイルのアクセス権限を適切に設定する
  • サービスの実行ユーザーを指定し、root権限での実行を避ける

ベストプラクティスと推奨設定

systemdを効果的に使用するためのベストプラクティスや推奨設定を以下に示します。

  • サービスの自動再起動設定: サービスが異常終了した場合に自動で再起動する設定を行う
  • タイムアウト設定: サービスの起動や停止に時間制限を設ける

ハンズオンチュートリアルと実践例

もっと学びたい方は以下を参考にしてください。

  • 実践的なシナリオを通じた学習
  • チュートリアルと演習問題

実践的なシナリオを通じた学習

systemdやsystemctlの使い方を身につけるために、実践的なシナリオを通じたチュートリアルや演習問題を提供しています。

これらの教材を活用して、実際のシステム管理タスクに対応できるようになりましょう。

チュートリアルと演習問題

チュートリアルや演習問題を通じて、systemdやsystemctlの実践的な利用法を学べます。

具体的なシナリオを想定して、以下のような問題を解いていきましょう。

  • Webサーバーの自動起動設定
  • バックアップスクリプトの定期実行設定
  • システムのリソース監視と通知設定

トラブルシューティングとFAQ

systemdやsystemctlを使用する際には、いくつかの一般的な問題に遭遇することがあります。

以下に、よくある問題とその解決策を挙げます。

サービスが起動しない

ユニットファイルの記述を確認し、実行ファイルのパスや権限をチェックしてください。

また、ログを確認してエラーメッセージを見つけます。

タイマーが実行されない

タイマーユニットファイルの設定を確認し、対応するサービスが存在していますか?

サービスが正常に動作することを確認しましょう。

また、タイマーの有効化を忘れていないか確認します。

まとめ

当記事では、systemdとsystemctlの基本的な概要や使い方を網羅的に紹介しました。

初心者にもわかりやすい内容で、実践的な知識を身につけられるはず。

Linuxシステム管理のスキルを向上させるために、ぜひ参考にしてください。

タイトルとURLをコピーしました