systemctl コマンドを使用して Linux サービスを表示する方法
Linuxでのサービス管理は、初心者にとって少し戸惑うかもしれません。特に、サービスの開始、停止、あるいは単に確認するだけでは、多くのことが左右されるからです。サービスが誤動作したり、期待通りに動作しなかったりすることがあるので、systemctlを使ってサービスの一覧を表示したり制御したりする方法を知っておくことは、非常に役立ちます。このガイドでは、Linuxシステムをスムーズに動作させるための必須コマンドとコツを解説し、単なるコピー&ペーストではなく、何度も問題に遭遇してその癖を学んだ上で得た実践的なヒントをいくつか紹介します。
systemctl を使ってサービスを管理およびトラブルシューティングする方法
すべてのサービスを一覧表示して、実行中のサービスと実行されていないサービスを確認する
システムにどのようなサービスがロードされているかを確認したい場合(何かがうまく動作していない可能性があります)、まず最初にすべきことは、すべてをリストすることです。ターミナルで次のコマンドを実行してください。
sudo systemctl list-units --type=service
このコマンドを実行すると、 UNIT、LOAD、ACTIVE、SUB、DESCRIPTIONといった列を持つ、すべてのサービスを示す表が表示されます。Linuxは冗長な情報を好むため、設定によっては表がやや長すぎると感じるかもしれません。UNIT列には のようなファイル名が表示され、ssh.serviceACTIVE状態は実行中かどうかを示します。非アクティブまたは障害が発生したサービスも含め、すべてのサービスを表示するには、 を追加します--all。
sudo systemctl list-units --type=service --all
これは、動作していないと思われるサービスや起動時に有効化されていないサービスを追跡しようとしている場合に特に便利です。Linuxでは、スイッチを押すだけで済むような複雑な操作をしなければならないため、これらのコマンドを知っておくことで、裏側を覗き見ることができます。
アクティブまたは非アクティブなサービスを確認する
特定のサービスが実行されていない、または正常に起動していない疑いがある場合は、絞り込みます。
sudo systemctl list-units --type=service --state=active
これにより、アクティブな(実行中の)サービスのみが表示されます。逆に、停止しているサービスを確認したい場合は、以下を実行します。
sudo systemctl list-units --type=service --state=inactive
手動で再起動する必要があるサービスや、起動時に起動しないサービスを特定するのに便利です。ちなみに、サービスが非アクティブのように見えるのに実行されているはずの場合は、手動で起動する必要があるかもしれません。
失敗したサービスを見つける – 時々、サービスが停止してしまうことがあるため
サービスが動作しておらず、リストには表示されているものの失敗状態になっている場合は、次の点を確認してください。
sudo systemctl list-units --type=service --state=failed
起動に失敗したサービスやクラッシュしたサービスが表示されます。これは、奇妙な問題のトラブルシューティングを行う際の最初のステップとして役立ちます。何度何も考えずに再起動しても、サービスが完全に壊れているかどうかがわかるからです。
起動時に開始するように設定されているサービスを確認する
起動時に何が有効になっているかを知っておくと、後々面倒な手間が省けます。以下を実行してください。
sudo systemctl list-unit-files --type=service --state=enabled
この表は、システム起動時に実行されるように設定されている内容の概要を示します。サービスが無効化またはマスクされているため起動しない場合に便利です。無効化されているサービスを確認するには、enabledを に置き換えてくださいdisabled。
特定のサービスの詳細を取得する
特定のサービスで何が起こっているかを確認したいですか?サービスが失敗しているかもしれませんし、ステータス、ログ、メモリ使用量などを知りたいだけかもしれません。次のコマンドを実行してください。
sudo systemctl status <service-name>
または など<service-name>に置き換えてください。出力には、現在の状態、最近のログ、CPU/メモリ情報などが表示されます。これはヘルスチェックのようなものです。ディストリビューションによっては、詳細なログを取得する方が便利な場合があります。nginx.servicecups.servicejournalctl -u <service-name>
サービスを開始、停止、再起動、再読み込みして変更を保存する
サービスを開始する
サービスを起動して実行する必要がある場合は、設定後に次のコマンドを実行します。
sudo systemctl start <service-name>
これにより、手間をかけずにサービスが起動します。 で動作しているかどうかを確認してくださいstatus。
サービスを停止する
不正な動作をしているサービスや不要なサービスを停止するには、次のコマンドを実行します。
sudo systemctl stop <service-name>
再起動またはリロード(中断せずに変更する場合)
設定ファイルを編集して変更を適用したい場合は、通常は再起動するのが良いでしょう。ただし、一部のサービスではクイックリロードをサポートしています。再起動するには、以下の手順に従ってください。
sudo systemctl restart <service-name>
または、サポートされている場合は、構成をリロードするだけです。
sudo systemctl reload <service-name>
注: すべてのサービスがリロードをサポートしているわけではありません。まずはドキュメントをご確認ください。通常、設定パラメータの変更など、軽微な変更を行う場合は、リロードの方が安全です。
起動時にサービスを有効化または無効化する
起動時にサービスを自動的に開始したいですか?有効にするには:
sudo systemctl enable <service-name>
今後起動したくない場合は、無効にします。
sudo systemctl disable <service-name>
両方を同時に実行したい場合(有効化してすぐに開始する場合)は、以下を追加するだけです--now。
sudo systemctl enable --now <service-name>
マスクとマスク解除サービス – 締め出すか、再び利用可能にするか
マスクをかけると、いかなる方法でもサービスが起動されなくなります。ロックアウトしたい場合は、以下の手順に従ってください。
sudo systemctl mask <service-name>
これにより、サービスは/dev/nullにリンクされ、手動または自動で起動できなくなります。絶対に実行したくないサービスがある場合に便利です。ロックを解除するには、以下のコマンドをマスク解除します。
sudo systemctl unmask <service-name>
ヒント — サービスが起動しなくなったり、マスクされたまま固まったりすることがあります。状況がおかしくなった場合は、再起動するかキャッシュをフラッシュするか、マスク/マスク解除後に再起動してみてください。特に、頑固なサービスやカスタムスクリプトの場合は、想像以上に頻繁に発生します。
まとめ
systemctlを使いこなせるようになると、Linux は劇的に変わります。必ずしも完璧というわけではなく、一部のコマンドはディストリビューションやバージョンによって動作が異なりますが、ここで紹介した基本コマンドを使えば、トラブルシューティング、カスタマイズ、あるいは単にサービスの動作を正常化させるなど、ほとんどの状況に対応できます。特にマスクされたサービスの場合は、多少の試行錯誤が必要になるかもしれませんが、一度使いこなせれば、システムの制御ははるかに簡単になります。
まとめ
systemctl list-units --type=serviceサービスを確認するために使用- ステータスを確認する
systemctl status <service> - 開始/停止
systemctl start/stop <service> - 起動時に有効または無効にする
systemctl enable/disable <service> - 頑固な場合はサービスをマスクまたはマスク解除する
これで誰かの頭痛の種が解消されるといいのですが。Linuxのサービス管理は必ずしも簡単ではありませんが、これらのコマンドを使えば、かなり先手を打つことができます。これがお役に立てば幸いです。複数の環境でうまくいったので、あなたにも同じように効果があるかもしれません。
関連記事
この記事は役に立ちましたか?