我已经获得了一个名为odrived.service的服务,我已经编写了这个服务,它将由systemd自动启动,然后它将执行一个名为odriveagent的二进制文件。它可以工作,或者我认为它可以工作,因为systemctl status odrived.service确实显示odriveagent已经启动。但是,当我尝试执行依赖于odriveagent的脚本时,脚本会打印错误,说明odriveagent没有启动。
但是,如果我遵循odrive网站教程并手动将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发布于 2019-10-01 10:32:15
我想我在穆鲁和炸鱼薯条德里克的帮助下找到了我的答案。正如他们所怀疑的那样,由于我没有为我的odrived.service指定一个用户,所以我的odrived.service作为根用户运行。另一方面,我试图使用我的客户端脚本作为正常用户,导致客户端脚本无法找到根用户拥有的odriveagent进程。
正如炸鱼薯条德里克所建议的,将客户端脚本作为根用户运行是可行的,但我认为更合适的解决方案是在服务文件中指定用户。谢谢你们的帮助!
https://unix.stackexchange.com/questions/544586
复制相似问题