【问题标题】:how to change systemd unit files directory?如何更改 systemd 单元文件目录?
【发布时间】:2018-10-30 03:58:58
【问题描述】:

由于我想将所有服务单元文件放在我自己的目录中,例如/opt/myservice/,我找到了使用$SYSTEMD_UNIT_PATH 的方式https://unix.stackexchange.com/questions/224992/where-do-i-put-my-systemd-unit-file/367237#367237,但是systemdctl 在/opt/myservice/ 中找不到我的服务文件在我使用 shell 命令SYSTEMD_UNIT_PATH=/opt/myservice/ 设置SYSTEMD_UNIT_PATH 之后,有人知道它是如何工作的吗?谢谢

[root@localhost system]# ls /opt/myservice/
test.service
[root@localhost system]# export SYSTEMD_UNIT_PATH=/opt/myservice/
[root@localhost system]# echo $SYSTEMD_UNIT_PATH
/opt/myservice/
[root@localhost system]# systemctl daemon-reload
[root@localhost system]# systemctl status test.service
Unit test.service could not be found.

【问题讨论】:

  • 是的,我的意思是不要对 systemct 使用绝对路径。
  • 你在导出SYSTEMD_UNIT_PATH吗?
  • 是的,我试过export SYSTEMD_UNIT_PATH=/opt/myservice/,但没有用。
  • SYSTEMD_UNIT_PATH 可能需要在 systemd 进程上设置,而不是在systemctl - 尝试运行systemctl set-environment SYSTEMD_UNIT_PATH=/opt/myservice/
  • 它也不起作用,虽然systemctl show-environment中的SYSTEMD_UNIT_PATH是正确的

标签: centos systemd


【解决方案1】:

从文档来看,环境变量必须设置为内核环境。

所以,如果 systemd 的 pid 为 1,则必须将环境设置为内核选项,其他都无效(例如 /etc/profile、systemctl set-envionrment)

如果你使用grub驱动的系统,可以在/etc/default/grub中设置,将GRUB_CMDLINE_LINUX=开头的行改为 SYSTEMD_UNIT_PATH=/absolute/path/to/your/services:。如果您只想附加服务路径,则需要最后一个冒号。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-09
    • 2021-08-13
    相关资源
    最近更新 更多