debian systemdによるサービスの管理

debianをbusterにアップグレードしたのを機会にないがしろにしてきたがsystemctlの基本的なコマンドを整理。

いままでは/etc/init.dの下の起動スクリプトを使えばなんとでもなると思っていたけど、debianではjessieになった際にサービス管理はsystemdに移行している。systemdを操作するコマンドがsystemctlとのこと。

リンク: debian sysmted

基本的なコマンド

サービスの一覧を表示

# systemctl list-units --type service

サービスの状態を確認

# systemctl status apache2

OS起動時のサービスの有効化と無効化

# systemctl enable apache2

# systemctl disable apache2

サービスの開始

# systemctl start apache2

systemctlへのサービスの登録設定

/lib/systemd/system/の下にXXXXXXX.serviceの名前で設定ファイルを保存

# cat /lib/systemd/system/apache2.service
[Unit]
Description=The Apache HTTP Server
After=network.target remote-fs.target nss-lookup.target
Documentation=https://httpd.apache.org/docs/2.4/

[Service]
Type=forking
Environment=APACHE_STARTED_BY_SYSTEMD=true
ExecStart=/usr/sbin/apachectl start
ExecStop=/usr/sbin/apachectl stop
ExecReload=/usr/sbin/apachectl graceful
PrivateTmp=true
Restart=on-abort

[Install]
WantedBy=multi-user.target

設定ファイルを新規追加、編集した後にはsystemctlに認識させる必要がある

# sytemctl daemon-reload

所感

こうしてみると従来の/etc/init.dの構成に慣れてきた身としては面倒なことが増えたように思えてしまうが、ここに至る経緯やメリットもあるらしく以下のサイトが参考になった

とりあえずはOS的な都合でsystemdじゃなきゃ困ると言ったところか(超異訳