Linux service コマンド
service コマンドとは
serviceLinux システムでシステムサービスを管理するためのコマンドラインツールです。システムサービスの起動、停止、再起動、状態確認を標準化された方法で提供します。
サービス(Service)とは、バックグラウンドで動作するアプリケーションまたはプロセスであり、通常はネットワーク、ログ、データベースなどのシステムの中核となる機能を提供します。service コマンドを理解することは Linux システム管理において非常に重要です。
service コマンドの基本構文
service [服务名] [操作指令]
よく使う操作コマンド
| コマンド | 機能の説明 |
|---|---|
| start | 指定したサービスを起動する |
| stop | 指定したサービスを停止する |
| restart | 指定したサービスを再起動する |
| reload | 設定ファイルを再読み込みする(サービスを再起動しない) |
| status | サービスの稼働状態を確認する |
| --status-all | すべてのサービスの状態を一覧表示する |
よく使うパラメータの詳細
1. サービス管理の基本操作
Apache サービスを起動する:
例
service apache2 start
# または同等の systemctl コマンドを使用
systemctl start apache2
# または同等の systemctl コマンドを使用
systemctl start apache2
MySQL サービスを停止する:
例
service mysql stop
# 現代のシステムではこちらを推奨
systemctl stop mysql
# 現代のシステムではこちらを推奨
systemctl stop mysql
Nginx サービスを再起動する:
例
service nginx restart
# 設定ファイル変更後は通常、再起動して反映させます
# 設定ファイル変更後は通常、再起動して反映させます
SSH サービスの状態を確認する:
例
service sshd status
# 出力例:
# ● ssh.service - OpenBSD Secure Shell server
# Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
# Active: active (running) since Tue 2023-05-16 10:23:45 CST; 3h 25min ago
# 出力例:
# ● ssh.service - OpenBSD Secure Shell server
# Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
# Active: active (running) since Tue 2023-05-16 10:23:45 CST; 3h 25min ago
2. 高度な使い方
サービスの設定を再読み込みする(サービスを中断しない):
例
service nginx reload
# 設定ファイルのみ変更し、完全な再起動が不要な場合に使用
# 設定ファイルのみ変更し、完全な再起動が不要な場合に使用
すべてのサービスの状態を一覧表示する:
例
service --status-all
# [+] は稼働中のサービスを示す
# [-] は停止中のサービスを示す
# [?] は状態が不明なサービスを示す
# [+] は稼働中のサービスを示す
# [-] は停止中のサービスを示す
# [?] は状態が不明なサービスを示す
サービスが起動時に自動起動するように設定されているか確認する:
例
# 旧来の方法
chkconfig --list | grep httpd
# 現代のシステムではこちらを使用
systemctl is-enabled apache2
chkconfig --list | grep httpd
# 現代のシステムではこちらを使用
systemctl is-enabled apache2
実際の応用例
例1:Webサーバーの管理
例
# 1. Apache を起動
sudo service apache2 start
# 2. 設定ファイルを変更後、再読み込み
sudo nano /etc/apache2/apache2.conf
sudo service apache2 reload
# 3. 稼働状態を確認
service apache2 status
sudo service apache2 start
# 2. 設定ファイルを変更後、再読み込み
sudo nano /etc/apache2/apache2.conf
sudo service apache2 reload
# 3. 稼働状態を確認
service apache2 status
例2:データベースサービスのメンテナンス
例
# 1. メンテナンスのため MySQL を停止
sudo service mysql stop
# 2. メンテナンス操作を実行...
# 3. MySQL を再起動
sudo service mysql start
# 4. サービスの状態を確認
service mysql status
sudo service mysql stop
# 2. メンテナンス操作を実行...
# 3. MySQL を再起動
sudo service mysql start
# 4. サービスの状態を確認
service mysql status
新旧システムの違いについて
Linux システムの発展に伴い、サービス管理の方法は変化しました:
| 特性 | 従来のシステム(SysVinit) | 現代のシステム(systemd) |
|---|---|---|
| サービス管理コマンド | service | systemctl |
| 設定ファイルの場所 | /etc/init.d/ | /lib/systemd/ |
| ログ管理 | 分散したログファイル | journalctl |
| 並列起動 | 非対応 | 対応 |
互換性の説明:
- 現代のシステムでは、
serviceコマンドは通常、systemctlの互換性ラッパーです - 新しいシステムでの使用を推奨
systemctlより多くの機能を得るため
よくある問題の解決
問題1:サービスの起動失敗
例
sudo service mysql start
# 输出:Job for mysql.service failed because the control process exited with error code.
# 输出:Job for mysql.service failed because the control process exited with error code.
解決方法:
- 詳細なエラー情報を確認:
journalctl -xe
- ログファイルを確認:
tail -n 50 /var/log/mysql/error.log
- よくある原因:ポートの競合、権限の問題、設定ファイルのエラー
問題2:service コマンドが存在しない
service: command not found
解決方法:
- 最小限インストール環境かどうかを確認
- 必要なパッケージをインストール:
# Debian/Ubuntu sudo apt install sysvinit-utils # RHEL/CentOS sudo yum install initscripts
ベストプラクティスの推奨
- フルパスを使用する:本番環境では
/usr/sbin/serviceを直接使用するのではなくservice - systemctl と組み合わせる:現代のシステムでは優先的に
systemctlコマンドを使用 - sudo を追加する:サービス管理には通常 root 権限が必要
- ログの確認:サービス異常時はまず関連ログを確認
- 起動時自動起動の管理:
# 启用开机启动 sudo systemctl enable nginx # 禁用开机启动 sudo systemctl disable nginx
知識の拡張
関連コマンドの比較
| コマンド | 用途 | 例 |
|---|---|---|
| service | 互換性のあるサービス管理 | service sshd restart |
| systemctl | 現代のサービス管理(推奨) | systemctl restart sshd |
| chkconfig | SysVinit ランレベルの管理 | chkconfig --list |
| update-rc.d | Debian系ランレベル管理(Debian) | update-rc.d apache2 defaults |
この記事を通じて、Linux システムにおける service コマンドの中心的な使い方を習得できたはずです。service コマンドは古いシステムではよく見られますが、systemd を使用する現代の Linux ディストリビューションでは、systemctlの方がより推奨されるサービス管理ツールです。ご自身のシステム環境に合わせて適切なコマンドを選択し、サービスログを確認する良い習慣を身につけることをお勧めします。
Linux コマンド大全