我不想删除该服务,只是想避免它在启动时启动。我仍然需要选项来稍后手动启动(使用systemctl start <service>
命令)。
我尝试使用systemctl disable <service>
。它不起作用,因为它删除了服务。
还有另一种可能性。在其服务文件中,
[Install]
#WantedBy=multi-user.target
可以被注释掉(然后是systemctl daemon-reload
)。它对我自己的服务有效,因为它们的服务文件是我编写的。
但是,属于分发的服务文件位于中/lib/systemd/system
。此目录中的文件由OS管理,即它们将被更新覆盖,系统的其他部分可能会假设这些文件未修改,依此类推。简单地/etc
从中编辑系统文件是一个坏习惯,而我不想这样做。我不想在中编辑配置文件/lib
。
该怎么办?
systemctl disable
是执行此操作的正确方法;它仍然允许手动启动一个装置,即使它未出现在systemctl --all
的输出中—要列出所有可启动的装置,也应该运行systemctl list-unit-files
。要使设备无法启动,您需要这样做mask
。
$ sudo systemctl stop unbound
$ sudo systemctl status unbound
● unbound.service - Unbound DNS server
Loaded: loaded (/lib/systemd/system/unbound.service; enabled; vendor preset: enabled)
Active: inactive (dead) since Fri 2019-05-03 13:12:41 CEST; 5s ago
Docs: man:unbound(8)
Main PID: 5320 (code=exited, status=0/SUCCESS)
$ sudo systemctl disable unbound
$ sudo systemctl status unbound
● unbound.service - Unbound DNS server
Loaded: loaded (/lib/systemd/system/unbound.service; disabled; vendor preset: enabled)
Active: inactive (dead)
Docs: man:unbound(8)
$ sudo systemctl start unbound
$ sudo systemctl status unbound
● unbound.service - Unbound DNS server
Loaded: loaded (/lib/systemd/system/unbound.service; disabled; vendor preset: enabled)
Active: active (running) since Fri 2019-05-03 13:13:14 CEST; 1s ago
Docs: man:unbound(8)
Process: 30513 ExecStartPre=/usr/lib/unbound/package-helper chroot_setup (code=exited, status=0/SUCCESS)
Process: 30518 ExecStartPre=/usr/lib/unbound/package-helper root_trust_anchor_update (code=exited, status=0/SUCCESS)
Main PID: 30525 (unbound)
Tasks: 1 (limit: 4915)
CGroup: /system.slice/unbound.service
└─30525 /usr/sbin/unbound -d
如果确实需要,可以通过在中/lib
添加文件来覆盖定义的系统提供的服务/etc
,并更改其所需的目标。systemctl edit yourunit
会做正确的事情:它会打开一个编辑器,让您仅覆盖您关心的设置,并将结果存储在正确的位置,作为覆盖的“代码段”。系统提供的服务中对非覆盖设置的更新(例如,通过程序包升级)将被透明地考虑在内。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句