centos - 如何更改 systemd 单元文件目录?
问题描述
因为我想把我所有的服务单元文件放在我自己的目录中/opt/myservice/
,所以我找到了有$SYSTEMD_UNIT_PATH
问题的使用方式https://unix.stackexchange.com/questions/224992/where-do-i-put-my-systemd- unit-file/367237#367237 ,但是在我使用 shell 命令/opt/myservice/
设置后systemdctl 找不到我的服务文件,有人知道它是如何工作的吗?谢谢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.
解决方案
从文档来看,环境变量必须设置为内核环境。
所以,如果 systemd 的 pid 为 1,则必须将环境设置为内核选项,任何其他都无效(例如 /etc/profile、systemctl set-envionrment)
如果你使用 grub 驱动的系统,你可以设置它/etc/default/grub
,改变行开头GRUB_CMDLINE_LINUX=
和追加 SYSTEMD_UNIT_PATH=/absolute/path/to/your/services:
。如果您只想附加服务路径,则需要最后一个冒号。
推荐阅读
- c - 来自 LzmaDecode 函数 (C lzma) 的 SZ_ERROR_DATA
- c++ - 为什么是 std::thread threadObj((WorkerThread())) 而不是 std::thread threadObj(WorkerThread()())
- amazon-web-services - 为一分钟内特定数量的网站点击选择哪个 AWS Cloudwatch 警报指标?
- gradle - Gradle 项目未显示在 Intellij 新建项目向导中
- javascript - 如何用javascript控制输入值
- c - 谁能告诉我这个冒泡排序中的问题?
- javascript - Type incoherence between the register() function of react-hook-form and the native input types
- javascript - 如何冻结/停止 JavaScript 执行直到函数完成
- ios - 在没有按钮的视图控制器上自动播放视频
- google-sheets - 如何解决重定向问题?