由于'INFO spawnerr:'app_name'的调度程序未知错误,因此无法启动nohup服务:EACCES'

问题描述 投票:8回答:5

我正在尝试与主管一起开始服务,但我得到一个错误说

INFO spawnerr:为'app_name'制作调度程序的未知错误:EACCES

这是我的supervisord.conf文件:

[supervisord]
logfile=/tmp/supervisord.log
logfile_maxbytes=50MB   ; change these depending on how many logs
logfile_backups=10      ; you want to keep
loglevel=info
pidfile=/tmp/supervisord.pid
nodaemon=true
minfds=1024
minprocs=200

[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface

[supervisorctl]
serverurl=unix:///tmp/supervisor.sock  socket

[program:myscript]
command= python -u /home/ubuntu/appfolder/app_name.py
autostart=true
autorestart=unexpected 
redirect_stderr=true
stdout_logfile=/var/log/app_name.log
python amazon-web-services supervisord nohup
5个回答
8
投票

我有同样的问题 - 芹菜子程序日志写在我的app文件夹下的logs子文件夹中,结果我在调试Nginx的问题时将所有者设置为www-user。我将app文件夹的所有者更改回ubuntu(>> whoami

sudo chown -R ubuntu:ubuntu /var/www/myapp/

让它工作。


2
投票

问题是日志文件的权限使用用户运行管理程序,您可以在supervisord.conf文件的相同路径中创建“logs”文件夹并更改:

logfile=/tmp/supervisord.log

logfile=logs/supervisord.log

1
投票

我在一个无特权的supervisord容器中运行Docker时遇到此错误,当我尝试使用supervisord [supervisord]指令让[user]以非root用户身份运行时。

这是由docker #31243引起的,其中容器以root启动,然后另一个用户被创建/切换到(根据supervisord更改为非root)以及容器的stdin/stdout/stderr通过它的TTY的限制权限。

我的解决方法是将非root用户添加到tty组,例如useradd -G tty supervisord,确保你运行tty例如docker run ... -t或Docker撰写tty: true


0
投票

我有同样的问题,我建议做以下事情

  1. 添加运行该服务的用户。用户= youruser
  2. 将您的日志移动到主管目录

从:

logfile=/tmp/supervisord.log

至:

logfile=/var/log/supervisor/supervisord.log

你的pid文件也一样

pidfile=/tmp/supervisord.pid >> pidfile=/var/run/supervisor/supervisord.pid 

做两个dirs

mkdir /var/run/supervisor/

mkdir /var/log/supervisor/

然后改变目录

chown youuser:youuser -R /var/log/supervisor/

如果这不工作,请仔细检查谁可以写你的日志文件和pid文件。

ls -l /var/log/supervisor/supervisord.log

如果它仍然无法正常工作,请尝试更新您的主管


0
投票

错误信息表明您的应用程序“app_name”可能读取或写入没有权限的文件。

你有root用户启动supervisord,然后切换到特定用户吗?在这种情况下,您可以使用root用户在“app_name”中创建文件,但特定用户可能没有正确的权限。

© www.soinside.com 2019 - 2024. All rights reserved.