systemd の上書き
systemd のユニット定義は、上書きしたり、変数を定義したりで、似たような設定をまとめることが出来る。
変数を使う
systemctl start serial-getty@ttyUSB0.service
name@.service
で定義されたサービスは name@VARIABLE.service
と@以降に引数を与えることができ、定義ファイルの中で %I
と書くことで参照できる。
systemd の定義内容を確認 / cat
cat を使えば、いまの内容を見ることが出来る。
systemctl cat serial-getty@.service
編集する / edit
edit で追記(上書き)編集が出来る。
systemctl edit serial-getty@ttyUSB0.service
ただし、typeによっては、ExecStartを上書きが不可能。っていうか、ExecStartやExecStartPreのように複数記述が許可されるものは、上書きではなく追記になる。 まああれだ一番大事なExecStartを上書きするなら次に紹介する --full でから定義を作ったほうが確実
また、@name
を指定するときは、edit時に指定すればいい。
編集を捨てる / revert
edit したものを破棄してなかったコトにするには、revert
する
systemctl revert serial-getty@ttyUSB0.service
完全なコピー を作って上書き
上書きでは中途半端になるとき、同名のファイルを優先度の高いフォルダに作って上書きを実現する
systemctl edit --full serial-getty@ttyUSB0.service
この場合、次のコマンドと同等になる。
ln -s /lib/systemd/system/serial-getty@.service /etc/systemd/system/serial-getty@ttyUSB0.service vim /etc/systemd/system/serial-getty@ttyUSB0.service
fullしたときは、revertするのでは消えなかったので rm する。
rm /etc/systemd/system/serial-getty@ttyUSB0.service
参考資料
configuration - How do I override or configure systemd services? - Ask Ubuntu