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 スクリプトの使用方法
- 上記のスクリプトを
/etc/init.d/my_serviceとして保存します。 - サービスの起動と停止に権限を与えてください。
sudo chmod +x /etc/init.d/my_service
- サービスを管理するために、
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のトピックサービス管理に関するチュートリアルです。