Supervisor启动失败:无法切换目录ENOENT错误求助
问题排查与解决:Supervisor无法切换目录(ENOENT错误)
问题根源
Supervisor不支持解析路径中的~(波浪号)。~是Shell的特殊字符,用来指代当前用户的家目录,但Supervisor不会调用Shell去展开这个符号,它会把~/MyProjects/PhoneNumbers_Sender/当作字面路径去查找,自然找不到对应目录,从而抛出ENOENT(文件/目录不存在)错误。
解决方案
替换路径为绝对路径
把配置文件中的波浪号路径替换为rafail用户家目录的绝对路径,示例如下:[program:phone_sender] directory=/home/rafail/MyProjects/PhoneNumbers_Sender/ command=bash start.sh user=rafail autostart=true autorestart=true startsecs=0 stderr_logfile=/home/rafail/phone_stderr.log stdout_logfile=/home/rafail/phone_stdout.log你可以通过执行
echo ~rafail命令,确认rafail用户的家目录绝对路径。重新加载配置并启动进程
修改配置后,执行以下命令让Supervisor生效:supervisorctl reread supervisorctl update supervisorctl start phone_sender
额外验证步骤
- 手动进入绝对路径目录,确认目录存在:
cd /home/rafail/MyProjects/PhoneNumbers_Sender/ - 确认
start.sh文件存在且有执行权限:ls -l start.sh,如果权限不足,执行chmod +x start.sh添加执行权限
内容的提问来源于stack exchange,提问作者rafailmdzdv
相关产品推荐
相关产品推荐

