それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

systemd の設定を上書きでゼロから書くのを避ける

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