← Back to Home

サービス管理(systemctl, service, init.dなど)

Views: 979

You can try the commands on our interactive shell.

Linux のトピックサービス管理: systemctl, service, init.d

はじめに

この記事では、Linuxでサービスを管理するための主な方法について解説します。この中でも特に注目したいのは systemctl, service, そして init.d ファイルです。

1. init.d

/etc/init.d ディレクトリは、システムが起動またはシャットダウンするときに実行されるスクリプトを含んでいます。このディレクトリ内の各ファイルは、特定のサービスに対する管理を行っています。

サンプル init.d スクリプト

以下に、簡単な init.d スクリプトの例を示します。

#!/bin/sh
#
# /etc/init.d/my_service
#

# プロセス名
DAEMON_NAME="my_service"
DAEMON="/usr/local/bin/$DAEMON_NAME"

# ユーザー
USER="root"

case "$1" in
  start)
    echo "Starting $DAEMON_NAME..."
    su - $USER -c "$DAEMON start"
    ;;
  stop)
    echo "Stopping $DAEMON_NAME..."
    su - $USER -c "$DAEMON stop"
    ;;
  restart)
    $0 stop
    $0 start
    ;;
  status)
    # 状態を確認するロジックをここに追加
    echo "$DAEMON_NAME is running."
    ;;
  *)
    echo "Usage: $0 {start|stop|restart|status}"
    exit 1
    ;;
esac

exit 0

init.d スクリプトの使用方法

  1. 上記のスクリプトを /etc/init.d/my_service として保存します。
  2. サービスの起動と停止に権限を与えてください。
sudo chmod +x /etc/init.d/my_service
  1. サービスを管理するために、update-rc.d(Debian/Ubuntu)または chkconfig(CentOS/RHEL)を使用します。

Debian/Ubuntu

sudo update-rc.d my_service defaults

CentOS/RHEL

sudo chkconfig --add my_service
sudo chkconfig my_service on

2. service コマンド

service コマンドは、init.d スクリプトを簡単に実行するために使用されます。基本的な構文は以下の通りです。

service <サービス名> <コマンド>

使用例

sudo service my_service start
sudo service my_service stop
sudo service my_service restart
sudo service my_service status

3. systemctl

systemctl は、より新しいシステム管理ツールで、Debian/Ubuntu 16.04(Xenial Xerus)以上と CentOS/RHEL 7 以上で利用できます。これは init.d スクリプトよりも多くの機能を提供します。

サービスの起動

sudo systemctl start my_service.service

サービスの停止

sudo systemctl stop my_service.service

サービスの再起動

sudo systemctl restart my_service.service

サービスの状態確認

sudo systemctl status my_service.service

サービスの自動起動設定

sudo systemctl enable my_service.service

まとめ

この記事では、Linuxでサービスを管理するための init.d, service, そして systemctl を紹介しました。それぞれのツールは、特定の状況に最適な機能と使い方を提供しています。新しいシステムでは、systemctl を主に利用することをお勧めしますが、既存のシステムでは init.d スクリプトや service コマンドも依然として利用されています。

付録: 自動起動スクリプトの例

以下に、/etc/systemd/system/my_service.service ファイルのサンプルを示します。

[Unit]
Description=My Service Description
After=network.target

[Service]
User=root
ExecStart=/usr/local/bin/my_service start
ExecStop=/usr/local/bin/my_service stop
Restart=always

[Install]
WantedBy=multi-user.target

このファイルを保存した後、次のコマンドでサービスを管理できます。

sudo systemctl daemon-reload
sudo systemctl enable my_service.service
sudo systemctl start my_service.service

以上がLinuxのトピックサービス管理に関するチュートリアルです。

Try it Now!