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

use*_*600 24 systemd

在nginx.serviceUbuntu 16.04 上,我应该把 systemd 文件放在哪里,例如 Nginx或类似的东西?

小智 26

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

然后发出命令:

systemctl enable nginx
Run Code Online (Sandbox Code Playgroud)

最后

systemctl start nginx
Run Code Online (Sandbox Code Playgroud)

  • `systemctl 守护进程重新加载` (7认同)
  • M. Kudriavtsev 是错误的。`systemctl enable` 执行重新加载,正如其手册页所述。不需要显式重新加载。 (3认同)

hee*_*ayl 19

通常,在 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
Run Code Online (Sandbox Code Playgroud)

默认情况下,它将使用文件/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
Run Code Online (Sandbox Code Playgroud)