这是supervisorctl所说的:
# supervisorctl start myapp_live
myapp_live: ERROR (no such process)
我在Ubuntu 10.04上使用以下配置运行它:
文件/home/myapp/live/deploy/supervisord_live.ini:
[program:myapp_live]
command=/usr/local/bin/gunicorn_django --log-file /home/myapp/logs/gunicorn_live.log --log-level info --workers 2 -t 120 -b 127.0.0.1:10000 -p deploy/gunicorn_live.pid webapp/settings_live.py
directory=/home/myapp/live
environment=PYTHONPATH='/home/myapp/live/eco/lib'
user=myapp
autostart=true
autorestart=true
在/etc/supervisor/supervisord.conf文件的末尾,有:
[include]
files = /etc/supervisor/conf.d/*.conf
,这是指向我的配置文件的符号链接:
# ls -la /etc/supervisor/conf.d
lrwxrwxrwx 1 root root 48 Dec 4 18:02 myapp-live.conf -> /home/myapp/live/deploy/supervisord_live.ini
一切对我来说都很好主管一直说
myapp_live: ERROR (no such process)
。有什么解决办法吗?#1 楼
我遇到了同样的问题,一个问题,虽然我不知道这是否是您的问题的答案。评论
我停下来,然后在一段时间前开始主管,它奏效了。不知道重新加载是否可以正常工作(因为我无法重新启动心脏),但我想可以
– grucha
2010-12-21 8:41
我也这样做了,并且奏效了。我想知道为什么在手动停止和启动时/etc/init.d/supervisor重新启动不起作用。
– Kirill
2012年2月29日在12:33
为我工作,尽管该服务无法正常工作,所以我只运行了ps aux | grep主管,然后sudo kill -HUP pid
–Wayne Werner
2012年8月13日在3:04
这很危险,因为它将重新启动整个Supervisor守护程序。
– Mark Theunissen
13年2月17日在20:04
超级用户重读可以解决此问题,而无需重新启动服务。
–乔纳森·柳蒂(Jonathan Liuti)
13年8月27日在13:20
#2 楼
正确的答案是,主管在放置新的配置文件时要求您重新阅读和更新。重新启动不是解决办法,因为这会影响其他服务。尝试:supervisorctl reread
supervisorctl update
评论
这应该是正确的答案。仅仅“主管重读”是不够的。
– Miebster
13-10-21在16:04
+1这是一个更好的答案,因为它不依赖于流程管理器。
– tidwall
14年7月30日在15:29
仅“ supervisorctl重读”是不够的,但是“ supervisorctl更新”是否足够?根据文档“更新”进行重新读取,然后重新启动其配置已被重新读取修改的所有程序。
– BlueBomber
2014年9月8日在22:03
它对我有用。我已经完成重启。
–user1012513
19年8月22日在11:34
@BlueBomber是的,但是重读将告诉您首先更改了什么,因此您不会无意间意外加载其他内容。
– DylanYoung
20年1月14日在17:42
#3 楼
确保您的主管conf文件以.conf结尾。花点时间让我弄清楚。希望它可以帮助下一个人。评论
在同一问题上浪费了一个小时-简直不敢这么简单。
–赞恩
16年5月5日在17:22
感谢您列出此答案。对于我的一生,我无法弄清楚这一点。
–菲利普·马丁(Phillip Martin)
16年6月2日在14:54
#4 楼
重新加载主主管进程可能会起作用,但是如果主管要监视多个进程,则会产生意外的副作用。配置文件进行任何更改:root@debian:~# supervisorctl reread
gunicorn: changed
然后,只需重新加载该应用程序即可:
root@debian:~# supervisorctl restart gunicorn
gunicorn: stopped
gunicorn: started
评论
如果您只想读取已更改/新的配置文件,并且不影响其余正在运行的进程,则这是最佳解决方案。 Supervisorctl将显示新应用程序可用。通过发出supervisorctl更新将其添加到(可重新启动的)过程中。另请参阅马克的答案serverfault.com/a/479754/125887
– Sjaak Trekhaak
2013年6月13日7:23
这对我来说还不够。需要更新supervisorctl。
–雅罗斯拉夫·尼基琴科(Yaroslav Nikitenko)
16年1月22日在15:39
#5 楼
我有一个类似的问题(myapp_live: ERROR (no such process)
),这是因为我的流程定义是>
虽然这不能解决所提出的问题,但我一直受到“正在寻找我的问题的解决方案”的搜索的领导,希望其他人也能在这里找到它。
评论
同样在这里!在遵循文档之后,我仅将其保留为[program],但将其设为[program:redis]使其对我有用。事情有时会变得很奇怪!
–ankush981
16年7月16日在7:08
#6 楼
我使用来自Ubuntu Server 12.10的管理程序包3.0a8-1.1版遇到此问题。我通过阅读内置帮助最终解决了该问题:$ sudo supervisorctl help restart
restart <name> Restart a process
restart <gname>:* Restart all processes in a group
restart <name> <name> Restart multiple processes or groups
restart all Restart all processes
尤其要使用以下语法: br />
正如文档在http://supervisord.org/configuration.html#programx-section上指出的那样-“ [program:x]部分实际上代表了主管的“同质过程组”(自3.0)。”因此,问题可能首先在3.0版中浮出水面。
PS:我是主管的新手。我使用https://github.com/bdarnell/tornado-production-skeleton/blob/8ad055457646929c0e8f48aaf20d98f054b1787b/production/chat.supervisor作为最小配置外观的示例。
#7 楼
我发现此解决方案最方便:使用which supervisorctl
(其中:visudo
-需要重新启动应用程序的用户,myappuser
-应用程序名称)保存sudoers文件: myappuser ALL=(ALL) NOPASSWD: /usr/bin/supervisorctl restart myapp
您不受发行版启动脚本的束缚,并且为用户重新启动gunicorn应用程序提供了非常狭窄的特权。另外,您无需关心pid。该命令不会要求输入密码,因此适用于自动部署bash / fabric脚本。另一方面-您必须知道,如果supervisorctl易受某些导致代码执行的错误的影响,则恶意用户可以使用此sudo特权以root身份运行代码(但据我所知,对于supervisor和找到这样的漏洞是一件大事。
#8 楼
在此处阅读supervisorctl.py的代码:https://github.com/Supervisor/supervisor/blob/master/supervisor/supervisorctl.py
您可以看到supervisorctl更新了(功能do_update)完全按照supervisorctl reread(函数do_reread)的方式调用reloadConfig()。
因此,我认为如果您在更新后调用update,则不必调用reread。
来自至少从2009年7月以来,git blame的输出就一直这样。
#9 楼
这是清单:新的配置文件应根据/etc/supervisord.conf中配置的包含模式来命名:
[include]
files=supervisord.d/*.ini
如我所见,将包括spam.ini,但不包括spam.conf。
如果通过复制创建新文件一个旧的,请确保实际更改
[program:]
行。因为如果您像在同一个程序中拥有两个文件一样愚蠢,则supervisorctl reread
会给您留下这个无可救药的错误消息作为惩罚:检测到文件后,supervisorctl reread
应该显示以下内容:No config updates to processes
然后,
supervisorctl update spam
应该同时启动并使其出现在supervisorctl status
中。#10 楼
我发现init.d脚本在各种不同的Ubuntu / Debian版本上都不可靠。方法是这样的:sudo supervisorctl reload
评论
尽管在许多情况下都可以使用,但这不是正确的方法。 @ burhan-khalid答案是正确的,并提供了相应的解释。
–格兰林
13年4月26日在18:26
#11 楼
我已经用yum install安装了supervisrod,后者安装了v2。*版本的超级用户。 Supervisor仅支持版本3的外部包含。必须使用easy_install来安装supervisor v3。评论
这也是我的问题,可能会在所有Centos 6.5或更低版本的安装中发生。
– bearrito
2015年2月18日,0:42
#12 楼
请小心符号链接,并在Supervisor上包含文件。这将允许对
/home/myapp/live/deploy/supervisord_live.ini
具有w特权的任何人更改ini
文件并启动任何恶意代码。此
ini
文件应位于您的主管的conf目录中或在其下的任何子目录中。
评论
我正为同样的问题挠头。我重新读取或更新时未加载我的配置文件。原来,我已将配置文件另存为foo.conf.py而不是foo.conf,因此未被识别。