由于我想将所有服务单元文件都放在自己的目录中,例如/opt/myservice/
,所以我找到了在问题https://unix.stackexchange.com/questions/224992/where-do-i-put-my-systemd-unit-file/367237#367237中使用$SYSTEMD_UNIT_PATH
的方式,但是systemdctl找不到我我使用外壳程序命令/opt/myservice/
设置SYSTEMD_UNIT_PATH
后在SYSTEMD_UNIT_PATH=/opt/myservice/
中创建了服务文件,有人知道它如何工作吗?
[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.
答案 0 :(得分:0)
从文档来看,环境变量必须设置为内核环境。
因此,如果 systemd 的 pid 为 1,则环境必须设置为内核选项,任何其他都无效(例如 /etc/profile、systemctl set-envionrment)
如果你使用grub驱动的系统,你可以在/etc/default/grub
中设置它,改变以GRUB_CMDLINE_LINUX=
开头的行并附加 SYSTEMD_UNIT_PATH=/absolute/path/to/your/services:
。如果您只想附加服务路径,则最后一个冒号是必需的。