【Linux入門】systemctlの使い方:サービスの一覧表示・ステータス確認・制御のコツ
このガイドでは、systemctlコマンドを使ってサービスを一覧表示し、ステータスを確認する方法を詳しく解説します。あわせて、サービスの制御や有効化・無効化など、systemctlのその他の実践的な活用方法についてもご紹介します。
従来のinitスクリプト方式から移行してくると、systemctlはまさに「清々しい」存在です。賛否両論の議論は数多く耳にしましたし、私自身も何度か意見が変わりました。しかし、日々の業務で使い続けた結果、今では完全にsystemctl派です。コマンドの文法は直感的で自然に感じられますし、日常的な運用面でも非常に扱いやすいツールです。私はこの変化を受け入れましたし、古いシステムを触るときほど「戻りたくない」と感じるほどです。それでは、systemctlの仕組みと使い方を見ていきましょう。
サービスのステータス確認(systemctl status)
systemctlの最も重要な用途は、サービスのステータス確認です。基本構文は以下の通りです。
# systemctl コマンド 引数 # systemctl status サービス名
systemctl status service の実行例
これはatdサービスの情報です。しばらく前に起動しており(そろそろ再起動すべきですね…)、現在はアクティブな状態です。PIDも表示されているため、必要であればプロセスを終了させることも可能です(もちろんsystemctlからでも終了できます)。まず手軽に試したいのは、失敗しているサービスのチェックです。
# systemctl --failed --type=service
systemctl --failed --type=service の実行例
失敗したサービスが見つかったら、それが異常なのか、それとも環境的に正常な挙動なのかを調査します。「正常」の基準を知るには、稼働中のサービス一覧を確認しましょう。
# systemctl -t service --state=active
systemctl -t service --state=active の実行例
情報を確認したら、ログとして保存しておきます。
# systemctl -t service --state=active > day1systemhealth.log
翌日以降にもう一度同じコマンドを実行し、diffで差分を比較します。
# systemctl -t service --state=active > day2systemhealth.log # diff day1systemhealth.log day2systemhealth.log
diff day1systemhealth.log day2systemhealth.log の実行例
これで、本来オンラインであるべきサービスが落ちていないかを把握できるようになります。新しいシステムに慣れる際には、以下のような主要サービス群をチェックするのがおすすめです。
LAMPスタック
まずは、多くの人が学習初期にデプロイを覚える基本的なスタック構成から見ていきましょう。探しているサービス名がわからなくても心配いりません。systemctlではタブ補完が有効になっています。「apache」と入力してTabキーを2回押せば、候補の中から必要なものを選択できます。
タブ補完でapache関連サービスを検索
# systemctl status apache2.service mongo mysql
systemctl status apache2.service mongo mysql の実行例
さらに詳細を知りたい場合は、次のコマンドが便利です。
# systemctl list-dependencies apache2.service
systemctl list-dependencies apache2.service の実行例
このコマンドは、対象サービスが依存するすべてのユニットを一覧表示します。各依存関係のステータスも色付きのドットで示され、緑が正常、赤が失敗を意味するため、問題箇所をひと目で把握できます。
ネットワーク関連サービス
次に、ネットワークが正しく機能しているかを確認しましょう。
# systemctl status networking ufw wpa
systemctl status networking ufw wpa の実行例
お気づきかもしれませんが、私のお気に入りの機能は、複数のサービスを同時に指定して一度に操作できる点です。しかも出力は自動的にlessへパイプされるため、長い結果も快適にスクロールしながら閲覧できます。
サービスの制御
さて、失敗しているサービスを特定できたら、あるいは設定変更を行ったら、次はサービスの制御の出番です。たとえばsshd_configファイルを更新したので設定を再読み込みしたい、新しいサービスを追加したい、あるいは完全に取り除きたい——そんな場面でも、systemctlなら簡単に対応できます。
選択肢は主に2つあります。reload(再読み込み)とrestart(再起動)です。reloadは新しい設定ファイルを読み込むだけで済むのに対し、restartは既存の接続を切断した上で設定ファイルを再読み込みします。状況に応じて適切な方を選びましょう。
restart と reload
# systemctl restart atd # systemctl status atd
systemctl restart atd の実行例
これで再起動が完了し、ステータスに新しい情報が反映されました。堅牢なロードバランサ構成のシステムであれば、私はrestartを好んで使います。接続は自動的に別ノードへ振り替えられ、ダウンタイムは事実上発生しないからです(厳密にはゼロではありませんが)。また、reloadだと一部のシステムやサービスが正しく動作しないケースを心配する必要もありません。いずれの場合も、再起動・再読み込みの前には必ずユーザーや顧客への事前通知を行いましょう。
stop / start / kill
サービスを停止したり、強制終了したりする必要がある場合も、systemctlで対応できます。
# systemctl stop atd # systemctl start atd # systemctl kill atd # systemctl start atd
これだけです。stop → start の組み合わせにより、restartと同じ結果を得ることができます。
systemctl status atd の実行例
サービスの有効化と無効化
システム起動時に自動的に開始させたい新しいサービスは、enableコマンドで登録する必要があります。
# systemctl enable <サービス名>
これで、システムは次回の起動時にそのサービスを自動的に開始するようになります。再起動を待たずにすぐ利用したい場合は、startを実行しましょう。
# systemctl disable <サービス名>
これでサービスは無効化されました。完全に削除したい場合は、stopで停止した上でパッケージをアンインストールしてください。
まとめ
以上がsystemctlの基本です。難しいことはありません。1つの統一されたツールで、システム上のサービスを一覧表示・監視・制御できます。他のシェルコマンドやシステム管理手法も合わせて習得し、日々のサーバー運用に役立ててください。
-
「サービスコントロールマネージャー エラー7001」の原因と解決方法を徹底解説
一部のWindowsユーザーの間で、予期しないシステムクラッシュの後にイベントビューアーに「Service Control Manager – エラー7001」が記録されるという問題が報告されています。この問題は、Windows 7、Windows 8.1、Windows 10のいずれでも発生が確認されています。調査の結果、このエラーの原因として考えられる要因はいくつかあることがわかりました。以下に、このイベントビューアーエラーを引き起こす可能性のある主なシナリオをまとめます。必須サービスが無効になっている – コンピューターブラウザーサービスが必要な依存関係をすべて呼び出せるようにするには、
-
【Windows 10】サービス コントロール マネージャー エラー(イベントID 7000)の解決方法
Windowsで発生するサービス コントロール マネージャー エラーは非常に厄介な問題で、最悪の場合デバイスがクラッシュすることもあります。このエラーが発生すると、他のアプリケーションの起動や動作にも支障をきたす可能性があります。特に「サービス コントロール マネージャー エラー 7000」は、デバイスの動作を遅くしたり、アプリの読み込みを妨げたりする原因となります。「簡単なトラブルシューティングでこの問題を解決したい」とお考えの方に向けて、本記事ではWindows 10でイベントID 7000のエラーを解消するための具体的な手順をご紹介します。Windows 10でサービス コントロール マ