0Pricing
Linux Server Deployment & SSH Mastery · レッスン

systemdによるシステムサービスの管理

systemdを使ってLinuxサーバーを支える長時間稼働プログラムを管理します。サービスの起動、停止、有効化、状態確認、journalctlによるログの確認を行い、ユニットがプロセス管理にどう組み込まれるかを理解します。

「systemdによるシステムサービスの管理」はCoddyKit上の無料Linux Server Deployment & SSH Masteryレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはLinux Server Deployment & SSH Mastery学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Linux Server Deployment & SSH Masteryコースには全4レッスンが含まれています。

サービスと通常のプロセス

これまでに、個々のプロセスとスケジュールされたタスクを管理しました。しかし、サーバーを構成するWebサーバー、データベース、SSHなどのプログラムはサービスとして実行されます。サービスとは、起動時に開始し、障害が発生した場合は再起動するバックグラウンドデーモンです。

最新のLinuxでは、サービスはシステムおよびサービスマネージャーであるsystemdによって管理されます。

systemdが管理するもの

systemdはすべてをユニットとして整理します。最も一般的な種類は.serviceユニットで、デーモンの実行方法を記述します。

systemctlコマンドは、これらのユニットを調査および制御するための主なインターフェースです。

systemctl --version

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

systemctl statusは、サービスが実行中かどうか、メインプロセスのID、最近のログ行、起動時に有効化されているかどうかを表示します。

サービスのトラブルシューティングでは、通常これが最初に実行するコマンドです。

systemctl status nginx

サービスを開始・停止する

start、stop、restartを使って、サービスの実行状態を制御します。これらは直ちに反映されますが、起動時の動作は変更しません。

接続を切断せずに設定を再読み込みできるサービスでは、reloadを使用してください。

sudo systemctl start nginx
sudo systemctl restart nginx
sudo systemctl reload nginx
sudo systemctl stop nginx

起動時にサービスを有効化する

enableを使うと、サーバーの起動時にサービスが自動的に開始されます。disableを使うと、起動時の対象から除外されます。これは、現在サービスが実行中かどうかとは無関係です。

便利な--nowフラグを使うと、有効化と開始を1つの手順で行えます。

sudo systemctl enable nginx
sudo systemctl enable --now nginx
sudo systemctl disable nginx

サービスを一覧表示する

インストール済みで実行中のものを確認するには、ユニットファイルまたはアクティブなユニットを一覧表示します。

  • list-units --type=service — 現在読み込まれているサービス
  • list-unit-files --type=service — インストール済みのすべてのサービスと、その有効化状態
systemctl list-units --type=service --state=running
systemctl list-unit-files --type=service

journalctlでログを読む

systemdはサービスの出力をジャーナルに保存します。journalctlで検索できます。

  • -u nginx — このサービスのみ
  • -f — リアルタイムで追跡する
  • -e —末尾に移動する
sudo journalctl -u nginx -f
sudo journalctl -u ssh --since '1 hour ago'

ユニットファイルの構造

サービスはユニットファイルで定義されます。通常、/etc/systemd/system/または/lib/systemd/system/に配置されます。主なセクションは[Unit]、[Service]、[Install]の3つです。

ExecStart行は、systemdが実行するコマンドを指定します。

[Unit]
Description=My App
After=network.target

[Service]
ExecStart=/usr/bin/myapp --port 8080
Restart=on-failure

[Install]
WantedBy=multi-user.target

独自のサービスを作成する

独自のプログラムをサービスとして実行するには、ユニットファイルを/etc/systemd/system/に配置し、新しいファイルを認識できるようsystemdを再読み込みしてから、有効化して開始します。

ユニットファイルを変更した後は、daemon-reloadが必要です。

sudo nano /etc/systemd/system/myapp.service
sudo systemctl daemon-reload
sudo systemctl enable --now myapp

障害発生時に自動再起動する

systemdの優れた機能の1つが自動復旧です。Restart=ディレクティブは、クラッシュしたサービスを再起動するよう指定します。

  • Restart=on-failure — ゼロ以外の終了コードの場合のみ
  • Restart=always — 停止するたびに
  • RestartSec=5 — 再試行前に待機する時間
[Service]
ExecStart=/usr/bin/myapp
Restart=always
RestartSec=5

ベストプラクティス

自信を持ってサービスを管理するには、次の点に注意してください。

  • 実行時の操作(start)と起動時の設定(enable)を区別する
  • ユニットファイルを編集した後にdaemon-reloadを実行する
  • 分散したログファイルではなく、journalctl -uを使ってデバッグする
  • 回復力を高めるため、独自アプリにはRestart=on-failureを追加する

クイックチェック

systemdに関する知識を確認しましょう。

まとめ

これで、systemdを使ってサーバーのサービスを管理できるようになりました。

  • status、start、stop、restart、reload
  • 起動時の動作を設定するenable/disable
  • サービスログを確認するjournalctl -u
  • 回復力を高めるRestart=を指定した独自の.serviceユニットファイル

これで、長時間実行されるデーモンを含め、プロセスとタスクの管理スキルがさらに充実しました。

よくある質問

「systemdによるシステムサービスの管理」レッスンは無料ですか?

はい。「systemdによるシステムサービスの管理」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Linux Server Deployment & SSH Masteryコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Linux Server Deployment & SSH Masteryコースには全4レッスンが含まれています。

「systemdによるシステムサービスの管理」で何を学びますか?

systemdを使ってLinuxサーバーを支える長時間稼働プログラムを管理します。サービスの起動、停止、有効化、状態確認、journalctlによるログの確認を行い、ユニットがプロセス管理にどう組み込まれるかを理解します。 ブラウザで直接実行するハンズオンコードでLinux Server Deployment & SSH Masteryを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Linux Server Deployment & SSH Masteryを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのLinux Server Deployment & SSH Masteryは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。

「systemdによるシステムサービスの管理」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このLinux Server Deployment & SSH Masteryレッスンでコードを書いて実行できますか?

はい。すべてのLinux Server Deployment & SSH Masteryレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. ユーザーとグループの管理
  2. システムプロセスの監視
  3. Cronによるスケジュールタスク
  4. systemdによるシステムサービスの管理
← Linux Server Deployment & SSH Masteryに戻る