1.14. デフォルトのユニット設定の拡張
追加の systemd 設定オプションを使用して、デフォルトのユニットファイルを拡張できます。
手順
/etc/systemd/system/
に設定ディレクトリーを作成します。# mkdir /etc/systemd/system/<name>.service.d/
<name> を、拡張するサービスの名前に置き換えます。この構文はすべてのユニットタイプに適用されます。
.conf 接尾辞が付いた設定ファイルを作成します。
# touch /etc/systemd/system/name.service.d/<config_name>.conf
<config_name> を、設定ファイルの名前に置き換えます。このファイルは、通常のユニットファイル構造に基づくため、すべてのディレクティブは該当するセクションで指定する必要があります。ユニットファイル構造 を参照してください。
たとえば、カスタムの依存性を追加するには、以下の内容で設定ファイルを作成します。
[Unit] Requires=<new_dependency> After=<new_dependency>
<new_dependency> は、依存関係としてマークされるユニットを表します。次の例は、30 秒の遅延後のメインプロセス終了後にサービスを再起動する設定ファイルです。
[Service] Restart=always RestartSec=30
1 つのタスクだけを扱う簡単な設定ファイルを作成します。これにより、他のサービスの設定ディレクトリーに簡単に移動したり、リンクできます。
変更をユニットに適用します。
# systemctl daemon-reload # systemctl restart <name>.service
例1.1 httpd.service 設定の拡張
Apache サービスの起動時にカスタムシェルスクリプトが自動的に実行されるように httpd.service
ユニットを変更するには、以下の手順を実行します。
ディレクトリーおよびカスタム設定ファイルを作成します。
# mkdir /etc/systemd/system/httpd.service.d/
# touch /etc/systemd/system/httpd.service.d/custom_script.conf
次のテキストを
custom_script.conf
ファイルに挿入して、メインサービスプロセスの後に実行するスクリプトを指定します。[Service] ExecStartPost=/usr/local/bin/custom.sh
ユニットの変更を適用します。
# systemctl daemon-reload
# systemctl restart httpd.service
/etc/systemd/system/
の設定ディレクトリーの設定ファイルは、/usr/lib/systemd/system/
のユニットファイルに優先します。そのため、設定ファイルに、一度だけ指定できるオプション (Description
、ExecStart
など) が含まれる場合は、このオプションのデフォルト値が上書きされます。上書きされたユニットの監視 で説明されているように、systemd-delta
コマンドの出力では、一部のオプションは実際に上書きされますが、該当するユニットは常に [EXTENDED] とマークされます。