systemdとは?
Linuxのシステム起動とサービス管理を担うsystemd
は、従来のinit
システムに代わり、
多くのLinuxディストリビューションで採用されています。systemd
の目的は、システム起動時間の短縮、並列処理のサポート、依存関係の解決などで、
これによりサービスやプロセスの効率的な管理が可能になります。
systemd
は、システム起動時に様々なサービス(ユニット)を並列で起動します。
これを管理するためのコマンドがsystemctl
です。
systemctlコマンド:システム管理の基礎
systemctl
は、systemdベースのシステムにおいて、サービスの起動、停止、再起動、状態確認を行うための主要なコマンドです。以下に代表的な操作と対応するオプションをまとめました。
1. サービスの起動
sudo systemctl start サービス名
- 目的:指定したサービスを起動します。
- オプション:
--now
:サービスを起動すると同時に有効化する。
2. サービスの停止
sudo systemctl stop サービス名
- 目的:指定したサービスを停止します。
3. サービスの再起動
sudo systemctl restart サービス名
- 目的:サービスを再起動(停止して再度起動)します。
4. サービスの状態確認
sudo systemctl status サービス名
- 目的:指定したサービスの現在の状態を表示します。
- オプション:
--full
:全ての情報をフルで表示。--no-pager
:ページングせずに全ての出力を表示。
実行結果例
● httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
Active: active (running) since Fri 2024-10-09 12:00:00 UTC; 10min ago
active
と表示されていれば、サービスが正常に動作中であることを示します。
5. サービスの有効化(自動起動設定)
sudo systemctl enable サービス名
- 目的:システム起動時に自動でサービスを起動するように設定します。
- オプション:
--now
:有効化と同時にサービスを起動する。
6. サービスの無効化(自動起動解除)
sudo systemctl disable サービス名
- 目的:システム起動時に自動でサービスを起動しないように設定します。
7. サービスのリロード
sudo systemctl reload サービス名
- 目的:サービスを停止せずに設定を再読み込みします。例えばApacheやNginxなどのWebサーバーは、設定ファイルの変更後に再起動せずにリロードできます。
serviceコマンド:initスクリプトベースのサービス管理
service
コマンドは、systemdが導入される以前のinitスクリプトを使用したサービス管理に使われていました。systemctl
が推奨されますが、互換性のためにservice
も残されています。
1. サービスの起動
sudo service サービス名 start
2. サービスの停止
sudo service サービス名 stop
3. サービスの再起動
sudo service サービス名 restart
4. サービスの状態確認
sudo service サービス名 status
systemctl
とservice
のコマンドは似ていますが、
systemdベースのシステムではsystemctl
の使用が推奨されます。
journalctlコマンド:システムログの確認
journalctl
は、systemdが収集したシステムログを表示するためのコマンドです。
特定のサービスに関するエラーや、システムの起動メッセージなどを確認する際に役立ちます。
1. 全ログの表示
sudo journalctl
- 目的:システム全体のログを表示します。
- オプション:
-n
:最新のログを指定した行数だけ表示。例:-n 50
(最新50行を表示)-r
:新しいログから順に表示。
2. 特定のサービスのログを表示
sudo journalctl -u サービス名
- 目的:特定のサービスに関連するログのみを表示します。
3. リアルタイムログの表示
sudo journalctl -f
まとめ
Linuxシステムにおけるサービス管理は、日常的な運用で不可欠なスキルです。systemctl
、service
、journalctl
などのコマンドを理解し、使いこなすことで、
より効率的にシステムを管理できるようになります。
この記事で紹介した各コマンドとオプションを実際に使用しながら、サービスの管理を学習してください。