CodeGym /コース /Docker SELF /サービス管理の基本: systemctl コマンド (起動、停止、再起動サービス)

サービス管理の基本: systemctl コマンド (起動、停止、再起動サービス)

Docker SELF
レベル 3 , レッスン 0
使用可能

サービス管理の基本: systemctl コマンド (起動、停止、再起動サービス)

1. Linuxでのサービスとは?

サービスは、現代のLinuxディストリビューションの基礎なんだよね。Nginxで自分のウェブサーバーを起動したい?対応するサービスを起動して設定すればOKだよ。MySQLデータベースを起動したい?またまた、それもサービスなんだよね。お気に入りのcronで素敵なbashスクリプトを実行したい?それもサービスだよ。サービス管理、これって仕事だけじゃなくて、個人プロジェクトにも必ず役に立つスキルなんだ。それと、面接で「どうやってサービスを停止するの?」って質問が思ったよりよく出るんだ、要チェックだよ。

定義と役割

Linuxにおけるサービスっていうのは、バックグラウンドで動作するプログラム(つまりデーモン、英語で"daemon"って言うんだ)だよ。これらのプログラムは、システムの起動時に自動で開始したり、必要に応じて手動で起動したりすることができるんだよ。それらは次のような特定のタスクを担当しているよ:

  • Webリクエストの処理(例: nginx/apache)。
  • リモートアクセスのサポート(例: openssh)。
  • スケジュールに従ったタスクの実行(例: cron)。

要するに、サービスっていうのは、ユーザーから見えないけど、システムの動作に絶対に必要なタスクをこなしている「働き者の馬」みたいな存在なんだ。


2. systemctlでサービス管理の基本

systemctlって何?

まず、systemctlsystemdを使うシステムでサービスを管理するためのメインコマンドだよ。もしあなたのシステムが最近のLinuxディストリビューション(例えばUbuntu、Fedora、CentOS)なら、systemdを使ってる可能性が高いね。

主な機能

  1. サービスの開始: サービスが停止している場合に開始する。
  2. サービスの停止: サービスを終了する。
  3. サービスの再起動: 一度停止してから再度サービスを開始する。
  4. ステータスの確認: サービスの現在の状態を確認する。

コマンドの基本構造はこんな感じ:

sudo systemctl [アクション] [サービス名]

サービスの開始と停止

開始:

例えば、nginxウェブサーバーをインストールして起動したい場合、startコマンドを使うよ:

sudo systemctl start nginx

停止:

でも、ウェブサーバーを一時的にオフにしたいときは?その場合はstopコマンドが役立つよ:

sudo systemctl stop nginx

サービスの再起動

設定変更を反映させたり、単にサービスをリフレッシュしたい場合(カフェインを補給して頑張れって感じでね)、restartコマンドを使おう:

sudo systemctl restart nginx

ステータスの確認

nginxが動いているかどうか確認したい?statusコマンドが詳細な情報を提供するよ:

sudo systemctl status nginx

出力結果にはこんな感じで表示されるよ:

  • プロセスのユニークなID(PID)。
  • 開始時間。
  • エラーログ(もし何か問題がある場合)。

出力例:

nginx.service - A high performance web server
   Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
   Active: active (running) since Tue 2023-11-01 09:00:00 UTC; 10min ago
   ...

3. サービスの自動起動

自動起動を有効化

システムの起動時にサービスを自動的に開始させたいときは、次を使ってね:

sudo systemctl enable nginx

自動起動を無効化

逆に、もうサービスが起動時にスタートしないようにするには:

sudo systemctl disable nginx

自動起動が有効かどうかを簡単に確認する方法はこちら:

systemctl is-enabled nginx

サービス管理の練習

では、cronサービスを使って総合練習をしてみよう!

  1. cronサービスを起動する:

    sudo systemctl start cron
    
  2. 稼働中かどうかを確認する:

    sudo systemctl status cron
    

    ステータスが"active (running)"になっていることを確認してね。

  3. cronサービスを停止する:

    sudo systemctl stop cron
    

    ステータスが"inactive (dead)"に変わったことを確認してね。

  4. cronサービスを再起動する:

    sudo systemctl restart cron
    

4. アクティブ、無効、異常終了したサービスの違い

サービスにはいくつかの異なる状態があるよ。主なタイプは以下の通りだね:

  1. Active (running) — サービスがアクティブに動作してる。問題なし。
  2. Inactive (dead) — サービスが停止してる。
  3. Failed — サービスの開始、停止、または実行時にエラーが発生した。

エラー状態のサービスを素早く見つけるには、これを使おう:

systemctl --failed

5. 典型的なエラーと落とし穴

エラー: Unit not found

こんなメッセージが出たら:

Failed to start nginx.service: Unit nginx.service not found.

これは必要なサービスがインストールされていないか、名前が間違っている可能性があるよ。正しい名前を確認してみて:

systemctl list-unit-files | grep nginx

権限エラー

もしsudoを使わずにコマンドを実行しちゃった場合、多分アクセス拒否されると思う:

Permission denied

systemctlコマンドを使う前にはsudoを忘れないようにね。


6. 実際のプロジェクトでの適用

サービス管理は、Linux関連のどんな役割でも使う技術だよ:

  • DevOps: 全てのシステムサービスの自動化と管理。
  • サーバー管理: ウェブサーバー、データベース、その他のサービスの状態を管理すること。
  • Linux開発: プロジェクト関連のサービスを管理する方法を理解するべき (例えば、開発サーバーの起動など)。

だから、systemctlコマンドを知ることは単なる抽象的なスキルではなく、仕事のための実際のツールなんだよ。例: サイトを更新した後でウェブサーバーを再起動する必要がある? sudo systemctl restart nginxを1回実行するだけでOK!

コメント
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION