私の知る限り、systemdはこれを特にうまく処理しません。私が理解しているように、あなたは、の動作をオーバーライドしたいsshd.service
ですか?
幸いなことに、systemdはこのようなことを想定して設計されています。サービス定義をに配置するだけで/etc/systemd/system/ssh.service
、実行systemctl daemon-reload
してユニットファイルを再ロードすると、systemdはsystemの代わりにその構成を自動的に使用しますssh.service
。
systemctl enable mysshd.service
仕事もしたいですか?問題ない。では[Install]
あなたのユニットファイルのセクション、という行を追加しますAlias=mysshd.service
。次にsystemctl reenable ssh.service
、systemdにユニットのシンボリックリンクを修正させるために実行すると、黄金色になります。
今、あなたは何をすべきかについての詳細を与えmysshd.service
ていません。それが通常のものと完全に異なる場合ssh.service
、素晴らしい!上記の方法を使用します。ただし、1つの小さなものだけを変更したい場合は、間違ったアプローチを使用しています。systemdを使用すると、通常のユニットファイルの上に適用されるユニットファイルの「スニペット」を作成できます。これにより、ユニットファイルの残りの部分がパッケージマネージャーから更新を受信できるようにしながら、個々のディレクティブを追加またはオーバーライドできます。これを行うには、作成するだけ/etc/systemd/system/ssh.d/my-custom-config.conf
です(my-custom-config.conf
好きな名前に変更できます。また、複数のオーバーライドファイルを作成することもできます)。そのファイルに、通常のに変更または追加するディレクティブを配置しますssh.service
。Alias=
ディレクティブを追加することもできますので、systemctl start mysshd.service
うまくいきます!実行することを忘れないでくださいsystemctl daemon-reload
完了したら(および使用した場合はAlias=
、systemctl reenable ssh.service
)。
余談ですが、で systemdユニットファイルを変更しないでください/usr/lib/systemd
。今まで!Filesystem Hierarchy Standard では、これ/usr
が読み取り専用として扱われる必要があります。実際には、これはパッケージマネージャーが/usr
(を除く/usr/local
)を処理することを意味し、パッケージマネージャーが処理するものには手を加えません-特に変更したものはおそらく最終的に上書きされるためです。代わりに、のような場所にあなたのものを置きます/etc
。