为什么 systemd 启动的进程对其他进程不可用

为什么 systemd 启动的进程对其他进程不可用

我已经编写了一个名为 odrived.service 的服务,该服务由 systemd 自动启动,而 systemd 又会执行一个名为 odriveagent 的二进制文件。它有效,或者我认为它有效,因为systemctl status odrived.service确实表明 odriveagent 已启动。但是,当我尝试执行依赖于 odriveagent 的脚本时,脚本会打印错误,指出 odriveagent 未启动。

但是,如果我按照教程奥驱动网站并手动输入nohup "home/user/.odrive-agent/bin/odriveagent" > /dev/null 2>&1 &终端,我的脚本能够找到已启动的 odriveagent 并执行。

systemd 启动的进程有什么特殊之处导致此错误吗?

下面是我的 odrived.service 代码

[Unit]
Description=ODrive Sync Agent Daemon

[Service]
ExecStart=/home/user/.odrive-agent/bin/odriveagent

[Install]
WantedBy=multi-user.target

答案1

我想我在muru和炸鱼薯条德里克的帮助下找到了答案。正如他们所怀疑的那样,由于我没有为 odrived.service 指定用户,因此我的 odrived.service 以 root 用户身份运行。另一方面,我尝试以普通用户身份使用客户端脚本,导致客户端脚本无法找到 root 用户拥有的 odriveagent 进程。

正如炸鱼薯条德里克所建议的那样,以 root 用户身份运行客户端脚本是可行的,但我认为更合适的解决方案是在服务文件中指定用户。感谢各位的帮助!

相关内容