Python中使用supervisor管理进程报错ERROR (no such file)如何解决
我想用 nginx 部署 django,之前部署成功了,可以访问。
后来我改了一些代码,重新 git pull ,于是想用 supervisorctl -c /etc/supervisord.conf restart all 这个命令重启网站。接着就出现问题了,搞了很久,没搞好就把服务器重装系统了,再部署一遍,现在就提示上面的错误。
具体的错误是:
xxxx: ERROR (no such file)
xxxx 是 program 的名字。
supervisord.conf 中的那段新增代码是:
[program:JZAssist]
command=-E uwsgi --ini /home/work/xxxx/uwsgi.ini
directory=/home/work/xxxx
startsecs=0
stopwaitsecs=0
autostart=true
autorestart=true
uwsgi.ini 中的内容是:
[uwsgi]
socket = :8000
chdir = /home/work/xxxx
module = xxxx.wsgi
master = true
processes = 4
vacuum = true
搜了很久都没解决,不知道有谁遇到过这样的问题?
Python中使用supervisor管理进程报错ERROR (no such file)如何解决
-E uwsgi --ini /home/work/xxxx/uwsgi.ini
这是完整的命令?目测少了东西
这个问题通常是因为supervisor找不到你配置里指定的可执行文件。检查你的配置文件,确保command路径完全正确。
最常见的情况是用了相对路径,或者文件没有执行权限。给你个例子,假设你的程序叫my_app.py:
# my_app.py
import time
def main():
while True:
print("App is running...")
time.sleep(5)
if __name__ == "__main__":
main()
对应的supervisor配置应该像这样:
; /etc/supervisor/conf.d/my_app.conf
[program:my_app]
command=/usr/bin/python3 /path/to/your/my_app.py ; 这里要用绝对路径
directory=/path/to/your/ ; 程序的工作目录
autostart=true
autorestart=true
user=your_username
stdout_logfile=/var/log/my_app.log
stderr_logfile=/var/log/my_app_error.log
关键检查点:
command里用绝对路径,别用python,用/usr/bin/python3这样的完整路径- 确保文件存在且有执行权限:
chmod +x /path/to/your/my_app.py - 如果程序需要虚拟环境,在
command里激活:/path/to/venv/bin/python /path/to/your/my_app.py - 用
supervisorctl reread和supervisorctl update重新加载配置
总结:检查路径和权限。
类似这样
command = /path/bin --opt
命令的部分内容在 ini 文件中,我把这命令直接用 sudo 输在 cmd 中可以运行。
之前我也是这样配置的,都没有问题。不知道是哪个步骤错了。
我不知道我做了什么,现在好像没问题了。
你 command 肯定写错了,自己检查下
有用 virtualenv 吗?
确实是 command 有问题,我删除了-E 就可以了。。。


