我想添加MY_SERVICE@SOME_SERVICE.service
并OnFailure=
使其持久。例如,在 中/lib/systemd/system/apache2.service
,我想[email protected]
在该[Unit]
部分中包含该行。
这可以通过 来完成systemctl edit
。但是,如果默认情况下apache2.service
包含OnFailure=
(例如,更新到较新版本后),它将被我的更改覆盖。我想要默认值OnFailure=
和我自己的值OnFailure=
(例如,)。OnFailure=default.service [email protected]
我怎样才能实现这个目标?
默认内容/lib/systemd/system/apache2.service
[Unit]
Description=The Apache HTTP Server
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
Environment=APACHE_STARTED_BY_SYSTEMD=true
ExecStart=/usr/sbin/apachectl start
ExecStop=/usr/sbin/apachectl stop
ExecReload=/usr/sbin/apachectl graceful
PrivateTmp=true
Restart=on-abort
[Install]
WantedBy=multi-user.target
/lib/systemd/system/apache2.service
之后的内容systemctl edit
(添加第 4 行)
[Unit]
Description=The Apache HTTP Server
After=network.target remote-fs.target nss-lookup.target
[email protected]
[Service]
Type=forking
Environment=APACHE_STARTED_BY_SYSTEMD=true
ExecStart=/usr/sbin/apachectl start
ExecStop=/usr/sbin/apachectl stop
ExecReload=/usr/sbin/apachectl graceful
PrivateTmp=true
Restart=on-abort
[Install]
WantedBy=multi-user.target
使用/lib/systemd/system/apache2.service
新的默认服务更新后的内容(修改后的第 4 行)apache2
OnFailure=
[Unit]
Description=The Apache HTTP Server
After=network.target remote-fs.target nss-lookup.target
OnFailure=default.service [email protected]
[Service]
Type=forking
Environment=APACHE_STARTED_BY_SYSTEMD=true
ExecStart=/usr/sbin/apachectl start
ExecStop=/usr/sbin/apachectl stop
ExecReload=/usr/sbin/apachectl graceful
PrivateTmp=true
Restart=on-abort
[Install]
WantedBy=multi-user.target
答案1
如果你跑systemctl edit apache2
/etc/systemd/system/apache2.service.d
,默认情况下它应该在;中创建一个覆盖片段它不会编辑 中的原始内容/lib
。将以下内容添加到您的代码片段中:
[Unit]
[email protected]
因为OnFailure
是一个列表,并且没有在代码片段中重置,上面给出的值将添加到原始单位指定的条目中,不会替换它们。