问题标签 [supervisord]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - 如何通过 xmlrpc 安全地以编程方式访问 supervisord?
我需要能够以编程方式管理 supervisord 设置。此外,系统上的任何用户都不能访问 supervisord 的配置。因此,需要以某种方式确保通信安全。
我知道 supervisord 以 XML-RPC 的形式提供编程访问。我阅读了文档并尝试以多种方式使用它,但我一直遇到问题。
在Introduction page 上,文档建议为 XML-RPC 接口运行 HTTP 服务器,并使用 Python 标准库xmlrpclib与之通信。这里有两个问题:
- supervisord.conf的
inet_http_server
指令仅包括用户名、密码和端口作为设置。没有加密连接的选项。 - xmlrpclib 甚至不支持用户名和密码。当我使用语法
username:password@host:port
时,我得到IOError: unsupported XML-RPC protocol
. 正如您在文档页面上的示例中看到的那样,没有进行身份验证。
- supervisord.conf的
由于 UNIX 套接字是安全的,我认为
[unix_http_server]
使用 xmlrpclib 连接是一个好主意。不过,我不知道身份验证是如何工作的,而且 xmlrpclib 只支持网络 HTTP/HTTPS 服务器。文档中的另一页提到了一个
supervisor.rpcinterface
模块。不过,我无法在 Python 中访问这样的东西。为了收集更多关于为什么会这样的信息,我用 Pip 重新安装了 supervisord。sudo pip install --upgrade supervisor
. 在 pip 输出中,我看到了Skipping installation of /usr/local/lib/python2.6/dist-packages/supervisor/__init__.py (namespace package)
. 我不知道为什么它会跳过命名空间包的安装。
我应该如何以编程方式安全地与 supervisord 通信?
supervisord - Supervisord 不会启动被杀死的进程
我已经supervisord
安装在我的 Ubuntu 10.04 上,它连续运行一个 Java 进程,并且应该在它以某种方式死亡或崩溃时修复(重新加载)进程。
在我的身上,我向那个Java 进程htop
发送 SIGKILL、SIGTERM、SIGHUP、SIGSEGV 信号并监视文件,它说。/etc/logs/supervisord.log
在08:38
我用 SIGSEGV 杀死进程。为什么它以代码 0 退出,为什么根本不supervisord
重新启动它?
我supervisord.conf
关于这个特定程序的所有内容如下:
当我启动 supervisord 时,进程工作得很好,但是没有得到治愈。
顺便说一句,任何想法如何将 supervisord 作为服务启动,以便在整个系统重新启动时自动启动?
supervisord - 主管 - 运行 python 脚本 PYTHONPATH 问题
我正在使用主管运行 python 脚本:
但是该过程无法启动。以下是错误日志的内容:
似乎获得了mymodule,但如果我自己运行twitter.py,一切正常,只有当我通过主管运行它时才会抛出这个错误。
我将 mymodule 添加到 ~/.profile 文件中的 PYTHONPATH 中,如下所示:
是否有任何理由说明脚本在通过终端运行时会起作用,但在通过主管运行时却不起作用?任何帮助,将不胜感激。
php - Supervisord 为 PHP 和 Gearman 添加多个进程
我最近使用 PHP5-FPM、Gearman 和 Supervisor 设置了 Ubuntu Natty。我已经编辑了我的 Supervisord 配置来运行 Gearman 工作人员。
lsof -i -P
这是我在运行 supervisord 之前的相关信息(仅显示 gearmand 和 php 进程) :
这就是我在我lsof -i -P
之后得到的/etc/init.d/supervisor stop && /etc/init.d/supervisor start
。
我没有看到任何关于 supervisord 本身的列表,我应该将 supervisord 视为命令之一吗?!
无论如何,当我再次停止并启动(或重新启动)supervisord 时:
看起来每次我停止并启动supervisord时,它都会创建另一个php进程,然后再创建另一个。只有当我重新启动 gearmand 时它才会恢复正常,即/etc/init.d/gearman-job-server stop && /etc/init.d/gearman-job-server start
。
这对我来说似乎不正常,因为当我停止 supervisord 时,它应该停止
这是supervisord的工作方式吗?!有什么办法可以防止这种情况发生吗?!
提前致谢。
编辑
我发现了导致问题的原因。这是与 supervisord.conf 和我的初始化脚本的小冲突。
我的 supervisord.conf 文件具有以下设置:
但是我的初始化脚本/etc/init.d/supervisord
具有以下设置:
所以我只是更改了 supervisord.conf 中的设置以匹配我的 init 脚本中的设置。
另外,我stopsignal=KILL
在我的supervisord配置文件(supervisord.conf)中添加了程序配置。
感谢 Minaz 的指导。
django - 芹菜减慢 django
我有一个使用 SQLite 的 django 1.3 站点。它运作良好。
我最近安装了 django-celery 和 django-kombu。我正在使用 supervisord 使用以下命令启动 celery dameon:
python manage.py celeryd -v 2 -B -s celery -E
一切正常,除了启动 celeryd 会使系统爬行。当我使用 top 时,我看到我正在创建一个长时间运行的 python 进程,它消耗了我共享服务器上 5% 到 10% 的 cpu。
在测试期间,我没有安排或运行芹菜任务。
php - 如何从主管管理的 PHP 脚本中停止主管进程(过程控制系统)?
我正在使用Supervisor并行化 PHP 脚本。当我的脚本从数据库获得某个响应时,它会执行一个命令来停止由 Supervisord 守护进程控制的所有进程,使用supervisorctl
. 这是命令:
问题是,当从 Supervisor 控制下的 PHP 脚本中触发时,此命令似乎没有任何影响。为什么?
如果我启动在 Supervisor 中运行的这组进程,然后直接从命令行触发脚本的另一个实例,它会工作并且所有 Supervisor 进程都将停止。
到底是怎么回事?守护程序的 PHP 脚本可以不是exec()
shell 命令吗?
ruby - Supervisord 和 ruby 1.9.2 - 睡眠导致 SIGTERM
我在 mac (10.7.2) 上使用 supervisord 来管理后台 ruby 进程。
当我通过主管启动 ruby 脚本时,如果脚本包含 a sleep()
,为了降低 cpu 使用率,它会收到 aSIGTERM
并停止执行,即使对于主管来说,该进程仍在运行。
supervisord - supervisorctl 不会跟踪正在运行的进程
问题
我无法让主管正确地跟踪正在运行的进程。我正在运行版本3.0a8
。
这是我的 supervisord.conf 文件
这是最基本的主管配置文件,保存在/etc/supervisord/conf.d/duder.conf
但是,这就是我与主管的终端会话的样子
有任何想法吗?
python - 主管 celeryd 的用户不正确
我有一些使用 celery 运行的定期任务(由 supervisord 守护),但是在尝试为用户创建主目录中的目录后,我为主管进程设置了“权限被拒绝”错误。在查看正在os.environ
运行的 celery 任务中的 dict 后,我注意到USER
var 设置为“root”,而不是我在我的 supervisord 配置中为 celery 设置的用户。
这就是我的/usr/local/etc/supervisord.conf
样子:
这可能是什么原因造成的?任何帮助将不胜感激!
bash - supervisord 停止子进程
我与 supervisord 面临的一个问题是,当我有一个命令反过来产生另一个进程时,supervisord 无法杀死它。
例如,我有一个 java 进程,当它正常运行时就像
supervisord 配置文件如下所示:
在阻止它们从supervisorctl
. 因此,当我从 supervisord 运行它并尝试从 supervisorctl 停止它时,只有顶级进程被杀死,而不是实际的 java 进程。