Linux service コマンド

Linux 命令大全Linux コマンド大全


service コマンドとは

serviceLinux システムでシステムサービスを管理するためのコマンドラインツールです。システムサービスの起動、停止、再起動、状態確認を標準化された方法で提供します。

サービス(Service)とは、バックグラウンドで動作するアプリケーションまたはプロセスであり、通常はネットワーク、ログ、データベースなどのシステムの中核となる機能を提供します。service コマンドを理解することは Linux システム管理において非常に重要です。


service コマンドの基本構文

service [服务名] [操作指令]

よく使う操作コマンド

コマンド 機能の説明
start 指定したサービスを起動する
stop 指定したサービスを停止する
restart 指定したサービスを再起動する
reload 設定ファイルを再読み込みする(サービスを再起動しない)
status サービスの稼働状態を確認する
--status-all すべてのサービスの状態を一覧表示する

よく使うパラメータの詳細

1. サービス管理の基本操作

Apache サービスを起動する:

例

service apache2 start
# または同等の systemctl コマンドを使用
systemctl start apache2

MySQL サービスを停止する:

例

service mysql stop
# 現代のシステムではこちらを推奨
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

2. 高度な使い方

サービスの設定を再読み込みする(サービスを中断しない):

例

service nginx reload
# 設定ファイルのみ変更し、完全な再起動が不要な場合に使用

すべてのサービスの状態を一覧表示する:

例

service --status-all
# [+] は稼働中のサービスを示す
# [-] は停止中のサービスを示す
# [?] は状態が不明なサービスを示す

サービスが起動時に自動起動するように設定されているか確認する:

例

# 旧来の方法
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

例2:データベースサービスのメンテナンス

例

# 1. メンテナンスのため MySQL を停止
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.

解決方法:

  1. 詳細なエラー情報を確認:
    journalctl -xe
  2. ログファイルを確認:
    tail -n 50 /var/log/mysql/error.log
  3. よくある原因:ポートの競合、権限の問題、設定ファイルのエラー

問題2:service コマンドが存在しない

service: command not found

解決方法:

  1. 最小限インストール環境かどうかを確認
  2. 必要なパッケージをインストール:
    # Debian/Ubuntu
    sudo apt install sysvinit-utils
       
    # RHEL/CentOS
    sudo yum install initscripts

ベストプラクティスの推奨

  1. フルパスを使用する:本番環境では/usr/sbin/serviceを直接使用するのではなくservice
  2. systemctl と組み合わせる:現代のシステムでは優先的にsystemctlコマンドを使用
  3. sudo を追加する:サービス管理には通常 root 権限が必要
  4. ログの確認:サービス異常時はまず関連ログを確認
  5. 起動時自動起動の管理:
    # 启用开机启动
    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 命令大全Linux コマンド大全

その他の拡張