systemd edit –full ユニット名
systemctl edit --full ユニット名
でユニットファイルを編集できる。
$ sudo systemctl edit --full ユニット名.service
.serevice
は省略できる。
$ sudo systemctl edit --full ユニット名
上記コマンドを実行するとユニットの設定ファイルがエディタで開かれる。
注意点
systemctl edit --full ユニット名
で編集するのはyumなどでインストールしていない独自のサービスの場合のみ使用すべき。
yumなどでインストールしたパッケージの場合、通常設定ファイルは/usr/lib/systemd/system/ユニット名.service
に保存されている。systemctl edit --full ユニット名
を実行した場合、/usr/lib/systemd/system/ユニット名.service
を/etc/systemd/systetm/ユニット名.service
にコピーして編集する。
そのためyumパッケージに更新があり、アップグレードした際に/usr/lib/systemd/system/ユニット名.service
のほうに変更があっても
/etc/systemd/systetm/ユニット名.service
を作成している場合は変更が反映されない。
上記の問題を避けるために、yumでインストールしたパッケージの設定変更は次で説明するoverride.conf
を使用する。
systemctl editコマンドでoverride.confを編集する
--full
オプションを省略すると/etc/systemd/system/ユニット名.d/override.conf
ファイルを編集する。
本体ファイルとoverride.conf
ファイルに同じ設定項目に対して異なる値を設定すると、override.conf
ファイルの値が優先される。
$ sudo systemctl edit ユニット名.service
直接ユニットファイルを編集する場合はdaemon-reloadが必要
ユニットファイルを直接編集した場合はdaemon-reload
が必要。
$ sudo vim /etc/systemd/system/ユニット名.service
上記コマンドで直接編集した場合は以下のコマンドでdaemon-reload
を実行するまで反映されない。
$ sudo systemctl daemon-reload
systemctl showコマンドでユニットの設定値の一覧を確認する
override.conf
の内容と合わせて、現状どのような設定値になっているのかを確認したい場合はsystemctl show
コマンドを使用する。
$ sudo systemctl show httpd.service
Type=notify
Restart=no
NotifyAccess=main
RestartUSec=100ms
TimeoutStartUSec=1min 30s
TimeoutStopUSec=1min 30s
RuntimeMaxUSec=infinity
WatchdogUSec=0
WatchdogTimestampMonotonic=0
.
.
.
(略)
エディタにvimを指定する
デフォルトのエディタがnano
など使い慣れていないエディタの場合は保存操作になれないことがある。systemctl edit
コマンドでエディタを指定する場合はEDITOR
環境変数を設定する。
例えばvim
を指定する場合は以下のようにする。
$ export EDITOR=vim
$ sudo systemctl edit --full ユニット名
一時的にエディタを指定する場合はEDITOR
変数をインラインで指定する。
$ EDITOR=vim sudo systemctl edit --full ユニット名
vim
であれば保存して終了するには:wq
を入力すればよい。
環境によってはSYSTEM_EDITOR
環境変数を設定する必要となる場合がある。
$ export SYSTEM_EDITOR=vim
$ sudo systemctl edit --full ユニット名
$ SYSTEM_EDITOR=vim sudo systemctl edit --full ユニット名