1.13. 既存のユニットファイルの変更
既存のユニットファイルを変更する場合は、/etc/systemd/system/ ディレクトリーに進みます。システムが /usr/lib/systemd/system/ ディレクトリーに保存しているデフォルトのユニットファイルは変更しないでください。
手順
必要とされる変更の程度に応じて、以下の方法のいずれかを実施してください。
-
補助設定ファイルのディレクトリーを
/etc/systemd/system/<unit>.d/に作成します。この方法は、ほとんどのユースケースで推奨されます。元のユニットファイルを参照しつつも、デフォルト設定を追加の機能で拡張できます。この場合、パッケージのアップグレードで導入されるデフォルトユニットへの変更は自動的に適用されます。詳細は、デフォルトのユニット設定の拡張 を参照してください。 -
/usr/lib/systemd/system/ ディレクトリーの元のユニットファイルのコピーを `/etc/systemd/system/ディレクトリーに作成し、そこで変更を加えます。コピーは元のファイルを上書きするため、パッケージの更新で導入される変更は適用されません。この方法は、パッケージの更新とは無関係に永続する重要なユニット変更を行う際に役に立ちます。詳細は、デフォルトのユニット設定のオーバーライド を参照してください。
-
補助設定ファイルのディレクトリーを
-
ユニットのデフォルト設定に戻るには、
/etc/systemd/system/でカスタム作成した設定ファイルを削除します。 システムを再起動せずにユニットファイルに変更を適用します。
systemctl daemon-reload
# systemctl daemon-reloadCopy to Clipboard Copied! Toggle word wrap Toggle overflow daemon-reloadオプションは、すべてのユニットファイルを再読み込みし、ユニットファイルへの変更をすぐに適用するのに必要な依存関係ツリー全体を再作成します。別の方法として、次のコマンドで同じ結果を得ることができます。init q
# init qCopy to Clipboard Copied! Toggle word wrap Toggle overflow 変更されたユニットファイルが実行中のサービスに属している場合は、サービスを再起動します。
systemctl restart <name>.service
# systemctl restart <name>.serviceCopy to Clipboard Copied! Toggle word wrap Toggle overflow
SysV init スクリプトが処理しているサービスのプロパティー (依存関係やタイムアウトなど) を変更するときは、init スクリプト自体は変更しないでください。代わりに、デフォルトのユニット設定の拡張 と デフォルトのユニット設定のオーバーライド にあるように、サービスの systemd ドロップイン設定ファイルを作成します。
その後、通常の systemd サービスと同じ方法でサービスを管理します。
たとえば、network サービスの設定を拡張するときは、init スクリプトファイル /etc/rc.d/init.d/network を変更しないでください。代わりに、新しいディレクトリー /etc/systemd/system/network.service.d/ と、systemd ドロップインファイル /etc/systemd/system/network.service.d/my_config.conf を作成します。そして、ドロップインファイルの値を変更します。systemd は、network サービスを network.service として認識することに注意してください。作成したディレクトリーが network.service.d と命名されるのはそのためです。