編集済み 4 数か月前 によって ExtremeHow 編集チーム
フェドラsystemdサービス管理コマンドラインターミナルソフトウェアシステム管理設定コンピュータ
翻訳が更新されました 4 数か月前
現代のLinuxディストリビューションでサービスを管理することは、システム管理者やマシン上で動作しているサービスを制御する必要があるユーザーにとって重要です。人気のあるLinuxディストリビューションであるFedoraは、systemdをシステムおよびサービスマネージャとして使用しています。この記事では、Fedoraでsystemdを使用してサービスを効果的に管理する方法について説明します。サービスの開始、停止、有効化、無効化、状態の確認、カスタムサービスユニットの作成などのトピックを取り上げます。FedoraまたはLinuxシステムに初めて触れる方でも、おさらいが必要な経験豊富なユーザーでも、この包括的なガイドはすべての人に役立ちます。
systemdは、従来のUnix System V
(sysv
)およびBSD init
を置き換えるように設計されたシステムおよびサービスマネージャを提供するツールです。デーモンのオンデマンド起動、サービスの監視、スナップショットサポートなどを提供します。Nicerはサービスに依存しています。systemdのコアはsystemctl
コマンドを介して管理されており、systemdシステムおよびサービスマネージャの状態の確認と制御を担当します。
systemdを実際に使用する前に、その主要なコンポーネントを理解しておくと役立ちます:
サービスユニットは、systemdで最も一般的なユニットタイプです。これらのユニットには、サービスが何であるか、どのように開始または停止されるべきか、それが依存しているもの、およびその他の特定の動作が定義されています。
サービスユニットファイルは通常/etc/systemd/system
または/usr/lib/systemd/system
にあり、以下の構文を持ちます:
[Unit]
Description=サンプルサービス
[Service]
ExecStart=/usr/bin/my-service
ExecStop=/usr/bin/my-service-stop
Restart=on-failure
[Install]
WantedBy=multi-user.target
各サービスファイルには通常、次のセクションが含まれます:
systemctl
コマンドはsystemdを監視および制御するために使用されます。以下は一般的なタスクとsystemctl
を使用してそれを行う方法です:
サービスの状態を確認するには、次を使用します:
systemctl status my-service.service
このコマンドは、サービスの状態、最近のログなどに関する情報を提供します。
サービスを開始するには、次を使用します:
systemctl start my-service.service
サービスを手動で開始することは、起動時に自動的に開始することを意味しません。
サービスを停止するには、次のコマンドを使用します:
systemctl stop my-service.service
このコマンドは、手動で再起動されるか、または再起動されるまでサービスを停止します。
サービスを再起動するには、次を使用します:
systemctl restart my-service.service
この操作は、サービス(実行中の場合)を停止してから再度開始します。
システムブート時にサービスを自動的に開始するには、それを有効にします:
systemctl enable my-service.service
逆に、サービスを無効にして自動的に開始されないようにするには、次を使用します:
systemctl disable my-service.service
サービスを有効にすると、サービスのユニットファイルからシステムのブートアップ構成へのシンボリックリンクが作成されます。
systemdツリー内のユニットファイルや設定を変更した場合は、systemdのリロードが必要です:
systemctl daemon-reload
このコマンドは、systemdに新しいまたは変更されたユニットファイルをスキャンするよう通知します。
カスタムサービスを作成すると、自分のアプリケーションを管理されたサービスとして実行できます。次は、それを作成するための簡単な手順です:
テキストエディタを開き、/etc/systemd/system/
ディレクトリに新しいサービスユニットファイルを作成します:
sudo nano /etc/systemd/system/my-custom-service.service
必要なサービス定義で埋めます:
[Unit]
Description=カスタムサービス例
[Service]
ExecStart=/usr/bin/custom-script.sh
Restart=on-failure
[Install]
WantedBy=multi-user.target
ExecStart
で呼び出されるスクリプトやプログラムが適切な権限を持っていることを確認します:
chmod +x /usr/bin/custom-script.sh
新しいユニットファイルを作成したら、systemdをリロードします:
systemctl daemon-reload
カスタムサービスを開始して有効にします:
systemctl start my-custom-service.service
systemctl enable my-custom-service.service
カスタムサービスは、他のシステムサービスと同じように管理されるようになりました。
ターゲットエンドポイントは、従来のinitシステムでのランレベルの概念を抽象化する設定です。サービスや他のユニット間の依存関係を管理し、複数のサービスやユニットをグループ化するための方法を提供します。
システム上の利用可能なターゲットを確認するには、次を使用します:
systemctl list-units --type=target
ターゲットまたはランレベルを変更するには、次を使用します:
systemctl isolate multi-user.target
このコマンドは、マルチユーザー・モードへのランレベルの変更に相当します。
systemdにはjournalctl
という統合されたシステムジャーナルツールが付属しています。このログ管理ツールは、systemdによって管理されるすべてのサービスのログを中央リポジトリに統合します。
特定のサービスのログを表示するには、次を使用します:
journalctl -u my-service.service
ログが生成されるリアルタイムで監視する場合は、次のフラグを使用します:
journalctl -u my-service.service -f
サービスの管理がスムーズに行えない場合があります。トラブルシューティングを知っていると非常に役立ちます:
journalctl
を使用してそのサービスのログエントリを調べ、特定のエラーメッセージを特定します。systemctl list-dependencies
コマンドを使用して、サービスの依存関係を確認します。サービス管理の効率は、Fedoraやその他のsystemdを使用するLinuxディストリビューションでのシステム管理において基本的です。このガイドでは、servicectlを使用してサービスのさまざまな側面を管理する方法を紹介しました。サービスの起動や停止といった基本的なタスクの実行から、カスタムサービスユニットの作成やjournalctlを使用したログの処理に至るまでのスキルを身に付けることで、システムがスムーズかつ効率的に動作することを保証し、タスクを自動化し、システムのサービスを効果的に管理できます。
Linuxの世界では、システム上で行うアクションにはroot権限が必要になる場合があることを忘れないでください。適切な権限を持ち、重要なファイルをバックアップし、重要なシステム設定に変更を加える前に常にバックアップを取ることを確認してください。systemdおよびそれが提供するツールを理解することは、Linuxサービス管理において非常に価値があります。
記事の内容に誤りがある場合, あなたは