Red Hat Training
A Red Hat training course is available for RHEL 8
17.14. デフォルトのユニット設定の拡張
本セクションでは、追加の設定オプションでデフォルトのユニットファイルを拡張する方法を説明します。
手順
追加の設定オプションでデフォルトのユニットファイルを拡張するには、最初に
/etc/systemd/system/
に設定ディレクトリーを作成します。サービスユニットを拡張する場合は、root
で以下のコマンドを実行します。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 つのタスクだけを扱う簡単な設定ファイルを作成することが推奨されます。これにより、他のサービスの設定ディレクトリーに簡単に移動したり、リンクできます。
そのユニットに行った変更を適用するには、
root
で以下のコマンドを実行します。systemctl daemon-reload
systemctl restart name.service
例17.1 httpd.service 設定の拡張
Apache サービスの起動時にカスタムシェルスクリプトが自動的に実行されるように httpd.service ユニットを変更するには、以下の手順で行います。
ディレクトリーおよびカスタム設定ファイルを作成します。
# mkdir /etc/systemd/system/httpd.service.d/
# touch /etc/systemd/system/httpd.service.d/custom_script.conf
Apache で自動的に起動するスクリプトが
/usr/local/bin/custom.sh
にある場合は、以下のテキストを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] とマークされます。