systemd入門


systemdはCentOS 7やRed Hat Linuxで採用されているLinuxの起動処理やプロセス管理を行うためのしくみです。簡単にいうと、起動時にデーモンになってくれる起動設定ファイルのフォーマットです。

🎃 systemdファイルのサンプル

こちらはApache(httpd)のsystemdファイルのサンプルです。

# cat /usr/lib/systemd/system/httpd.service
[Unit]
Description=The Apache HTTP Server
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=notify
EnvironmentFile=/etc/sysconfig/httpd
ExecStart=/usr/sbin/httpd $OPTIONS -DFOREGROUND
ExecReload=/usr/sbin/httpd $OPTIONS -k graceful
ExecStop=/usr/sbin/httpd $OPTIONS -k graceful-stop
KillSignal=SIGCONT
PrivateTmp=true
[Install]
WantedBy=multi-user.target

😀 systemdコマンドの実行と停止

systemdコマンドを作成したら、サービスの停止実行は次のコマンドで行います。

# サービスの起動
sudo systemctl start httpd
# サービスの停止
sudo systemctl stop httpd

🚕 systemdコマンドの自動実行・停止

systemdサービスを起動時に自動でbootしたり、自動起動を停止させるコマンドは次のとおりです。

# 自動起動の有効化
sudo systemctl enable httpd
# 自動起動の無効化
sudo systemctl disable httpd

🍣 systemdファイルの格納先

ディレクトリ 設定内容
/usr/lib/systemd/system インストール時の初期設定
/etc/systemd/system ユーザーによる個別設定

🍄 Unitについて

systemdでは「Unit」の単位で処理を管理します。Unitの設定ファイルは次の3つのセクションで別れています。

セクション 説明
Unit Unitの依存関係や順序関係など
Install systemctl enable/disableコマンドに影響する設定項目
タイプ固定セクション タイプごとに固有の設定((Service: プロセスの起動/停止、Mount: ファイルシステムのマウント/アンマウント、socket: ソケットの監視設定、device: システムが認識しているデバイス情報、path: パスの監視、target: 複数のUnitを取り巻とめる))

🍮 Unitセクション

「Unitセクション」の主なオプションはこちら。

オプション 説明
Description Unitの説明
Documentation ドキュメントのURL
Requires このUnitの起動の前提となるUnit
Wants このUnitの起動の前提となるUnitを記述
After このUnitより先に起動すべきUnitを記述
Before このUnitより後に起動すべきUnitを記述

😎 Installセクション

「Installセクション」の主なオプションはこちらです。

オプション 説明
antedBy enable => .wantsディレクトリにリンクを作成
RequiredBy enable => .requiredディレクトリにリンクを作成
Also enable/disable => enable/disableするUnitを記述
Alias enable => Unitの別名を設定

🏀 Serviceセクション

オプション 説明
ExecStart サービス起動時に実行するコマンド
ExecReload サービスリロードに実行するコマンド
ExecStop サービス停止時のコマンド
ExecStartPre/ExecStartPost サービス起動前後の追加コマンド
ExecStopPost サービス停止後(異常終了時)に実行するコマンド
EnvironmentFile 環境変数を読み込むファイル
Type サービスプロセスの起動完了の判定方法(simple: フォアグラウンドで実行、forking: プロセスをフォークしてバックグラウンド実行)
PIDFile fork型サービスのメインプロセスのPIDファイル
BusName D-Bus型サービスのbus接続名
Restart サービスプロセス停止時の再起動条件(always: 常に再起動を試みる、no: 再起動を行わない、on-failure: 異常終了時のみ再起動)
PrivateTmp (true: このサービス専用の/tmpと/var/tmpを用意する)

🐠 参考リンク

📚 おすすめの書籍