获取FileNotFoundError: [Errno 2] No such file or directory: 'bash'错误而运行我gunicorn Python应用程序的形式。服务文件。但是,单独运行 gunicorn 命令(不是从 .service 文件)运行正常。运行应用程序的 gunicorn 命令gunicorn -k geventwebsocket.gunicorn.workers.GeventWebSocketWorker -w 1 --bind <server_ip>:8080 wsgiapp.service 文件[Service]User=userWorkingDirectory=/home/user/appEnvironment="PATH=/home/user/app/app_venv/bin"ExecStart=/home/user/app/app_venv/bin/gunicorn -k geventwebsocket.gunicorn.workers.GeventWebSocketWorker --workers 1 --bind <server_ip>:8080 wsgi生成错误的 Python 代码import subprocesscmd = ['bash', 'script.sh' , args.get('arg')]try: process = subprocess.Popen(cmd, cwd=/path/to/bash_script, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, universal_newlines=True) while process.poll() is None: output = process.stdout.readline() if(output==''): break emit('tg_output', output)except subprocess.CalledProcessError as error: pass
2 回答
叮当猫咪
TA贡献1776条经验 获得超12个赞
IMObash
命令不在用户PATH 中。最好始终使用bash
命令的完整路径。
cmd = ['/bin/bash', 'script.sh' , args.get('arg')]
使用which bash
获得的完整路径。
MYYA
TA贡献1868条经验 获得超4个赞
您明确设置
Environment="PATH=/home/user/app/app_venv/bin"
您需要PATH
包含要使用的任何外部二进制文件的所有目录(实际上,如果您无论如何都通过完整路径运行它,则不需要真正包含脚本的目录;所以最好的解决方案可能只是PATH
从文件中完全删除此分配)。
您的 Bash 脚本似乎不需要 Python 来运行它,并且您创建的用于运行它的 Python 包装器似乎有错误(特别是,毯子except
看起来令人不安);也许更好的解决方案是完全运行一个单独的 Bash 进程。
添加回答
举报
0/150
提交
取消