サービス管理の基本: systemctl
コマンド (起動、停止、再起動サービス)
1. Linuxでのサービスとは?
サービスは、現代のLinuxディストリビューションの基礎なんだよね。Nginxで自分のウェブサーバーを起動したい?対応するサービスを起動して設定すればOKだよ。MySQLデータベースを起動したい?またまた、それもサービスなんだよね。お気に入りのcron
で素敵なbashスクリプトを実行したい?それもサービスだよ。サービス管理、これって仕事だけじゃなくて、個人プロジェクトにも必ず役に立つスキルなんだ。それと、面接で「どうやってサービスを停止するの?」って質問が思ったよりよく出るんだ、要チェックだよ。
定義と役割
Linuxにおけるサービスっていうのは、バックグラウンドで動作するプログラム(つまりデーモン、英語で"daemon"って言うんだ)だよ。これらのプログラムは、システムの起動時に自動で開始したり、必要に応じて手動で起動したりすることができるんだよ。それらは次のような特定のタスクを担当しているよ:
- Webリクエストの処理(例:
nginx
/apache
)。 - リモートアクセスのサポート(例:
openssh
)。 - スケジュールに従ったタスクの実行(例:
cron
)。
要するに、サービスっていうのは、ユーザーから見えないけど、システムの動作に絶対に必要なタスクをこなしている「働き者の馬」みたいな存在なんだ。
2. systemctl
でサービス管理の基本
systemctl
って何?
まず、systemctl
はsystemdを使うシステムでサービスを管理するためのメインコマンドだよ。もしあなたのシステムが最近のLinuxディストリビューション(例えばUbuntu、Fedora、CentOS)なら、systemd
を使ってる可能性が高いね。
主な機能
- サービスの開始: サービスが停止している場合に開始する。
- サービスの停止: サービスを終了する。
- サービスの再起動: 一度停止してから再度サービスを開始する。
- ステータスの確認: サービスの現在の状態を確認する。
コマンドの基本構造はこんな感じ:
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
サービスを使って総合練習をしてみよう!
cron
サービスを起動する:sudo systemctl start cron
稼働中かどうかを確認する:
sudo systemctl status cron
ステータスが"active (running)"になっていることを確認してね。
cron
サービスを停止する:sudo systemctl stop cron
ステータスが"inactive (dead)"に変わったことを確認してね。
cron
サービスを再起動する:sudo systemctl restart cron
4. アクティブ、無効、異常終了したサービスの違い
サービスにはいくつかの異なる状態があるよ。主なタイプは以下の通りだね:
- Active (running) — サービスがアクティブに動作してる。問題なし。
- Inactive (dead) — サービスが停止してる。
- 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!
GO TO FULL VERSION