12 我有一项服务仅在其他服务失败时才要运行([Unit] OnFailure=foo),但我不希望该服务(foo)在启动时自动启动。一个选项正在运行systemctl disable foo,但我正在寻找另一种方式。 背景:我正在创建一个OS映像,并且我不想启动计算机,运行该命令(systemctl disable foo),然后在声明最终映像之前将其关闭。 systemd — 舍邦 source
4 默认情况下,所有服务都是“禁用”的;选择启用。 如果foo.service是您的自定义服务,那么除非它被某些内容(如OnFailure=指令)显式引入,否则它将不会启动,并且您不应“禁用”任何内容。 — 英特尔 source 因此,基本上,除非先前已启用foo,否则您将“免费获得此功能”? — rogerdpack
26 systemctl enable通过操作/etc/systemd/system/(对于系统守护程序)中的符号链接来工作。当您enable使用服务时,它将查看WantedBy本[Install]节中的各行,并在那些.wants目录中抓取符号链接。 systemctl disable 相反。 您只需删除这些符号链接-手工完成与使用完全等效systemctl disable。 — 德罗伯特 source 这将是尚未由systemd运行的服务(它是自定义的),因此不会有任何这些额外的符号链接。我猜那些会在第一次启动时创建? — tshepang 2015年 3 @Tshepang它不应该被启用,除非您手动启用它(或脚本,当然) — derobert 1 哦,我以为它会自动启用(这是我通过安装Debian软件包所期望的)。很高兴知道。 — tshepang 2015年 3 @Tshepang是软件包中的postinst脚本,用于启用。或者我猜想将符号链接运送到包装中,不确定它们是否这样做。 — derobert
4 您可以分别使用systemctl start ServiceName.service和systemctl stop Service.Name.service启动和停止服务。与systemctl enable ...和相比systemctl disable ...,启动和停止命令仅在当前会话中有效,因此,当您重新引导计算机时,更改将不会保存。 — 舍邦 source