在哪里放置用户创建的 systemd 单元文件

在哪里放置用户创建的 systemd 单元文件

nginx.service我应该在 Ubuntu 16.04 上将 Nginx 或类似文件的 systemd 文件放在哪里?

答案1

推荐的地方是/etc/systemd/system/nginx.service

然后发出命令:

systemctl enable nginx

最后

systemctl start nginx

答案2

通常,在 Ubuntu 中,包提供的单元文件进入/lib/systemd/system/目录,例如/lib/systemd/system/nginx.service,而用户提供的或对包提供的单元文件的任何修改进入/etc/systemd/system/目录。

现在,要覆盖,您可以:

  • 将单元文件命名为提供的包,例如要覆盖/lib/systemd/system/nginx.service,您可以创建该文件/etc/systemd/system/nginx.service并将指令放在那里

  • .conf或者,您可以创建一个以原始单元文件命名的目录结尾的插入片段,并附.d加到目录名称,例如,您可以创建一个名为的文件/etc/systemd/system/nginx.service.d/override.conf并在其中放置语句


现在,您可以利用该systemctl edit命令为您完成所有手动操作,即它将为您创建必要的覆盖文件(首先它将创建一个临时文件(带有用于插入片段的中间目录),然后保存它会将临时文件提交rename()到所需的最终文件),您只需编辑该文件即可放入您的覆盖。

例如,要为上面提到的ngnx.service( /lib/systemd/system/nginx.service) 创建覆盖片段:

systemctl edit nginx.service

默认情况下,它将使用该文件/etc/systemd/system/nginx.service.d/override.conf。如果--full使用,则将/etc/systemd/system/nginx.service使用完整的替换文件(原始内容/lib/systemd/system/nginx.service将被复制到此文件)。

您还可以使用--runtime它来创建片段/run/systemd/system/(首先是插入片段,然后是整个片段--runtime,并且--full不互相排斥),这当然是临时的。

显然,您可以选择要使用的编辑器,优先顺序是:

$SYSTEMD_EDITOR > $EDITOR > $VISUAL > editor > nano > vim > vi

相关内容