问题标签 [runit]
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.
bash - 如何将 3 个命令组合成一个进程供 runit 监控?
我编写了一个脚本,它使用 wget 命令从两个源中获取一组参数,将它们存储到一个变量中,然后根据检索到的参数执行视频转码过程。安装了 Runit 来监控进程。
问题是当我尝试停止进程时,runit 不知道只需要停止最后一个转码进程,因此它无法停止它。
如何将 bash 脚本中的所有命令组合为单个进程/应用程序?
命令如下:
docker - RUnit 不会停止 docker-compose 的容器
我想要一个 RUnit 服务来监督由docker-compose
工具启动的一组容器,这是我的 runit 脚本:
在/etc/sv/app/run
这就是我所拥有的:
sv start app
- 启动 docker-compose 就好了sv stop app
- 停止 docker-compose 进程本身,但由于未知原因,它使容器保持运行
有没有机会也有stop
停止容器的命令?我认为这就是 docker-compose 在被 RUnit 停止时应该做的事情。
haproxy - 如何为 runit 自定义重启脚本?
我正在使用 runit 来管理 HAProxy,并希望安全重启以重新加载配置文件(特别是:)haproxy -f /etc/haproxy/haproxy.cfg -sf $OLD_PROCESS_ID
。我认为我可以run sv restart haproxy
并尝试添加一个名为 的自定义脚本/etc/service/haproxy/restart
,但它似乎永远不会执行。我如何有一个特殊的重启脚本?我的方法在这里还好吗?如何使用 runit 以最小的影响重新加载我的配置?
mysql - 在 RUnit 测试套件中使用 .setUp() 和 .tearDown() 函数
我的 R 测试存在以下问题。我有测试函数需要更改数据库、计算结果、检查这些结果是否等于测试值并清理数据库。我正在尝试使用来自 MySQL 的事务以及来自 RMySQL 的 dbBegin(con) 和 dbRollback(con) 函数。
我试图运行以下代码:
使用测试套件
但是,当我运行多个功能时,我得到
这意味着我永远不会回滚我在数据库中写入的内容。
谁能指出上面的代码有什么问题和/或如何在 R + RMySQL 中编写测试来测试内部事务?
谢谢,弗拉基米尔
debian - 监督 debian 中的守护进程
我们在Debian wheezy (oldstable) linux 服务器上运行 rabbitmq、redis 和 celery。所有这些都作为init.d
脚本安装并在引导时启动。我们希望密切关注它们并在其中任何一个出现故障时收到电子邮件警报。
我检查了诸如 supervisord 和 runit 之类的工具。但是,它们似乎都要求受监控的进程不是守护进程。
如何完成这项工作?还有其他工具可以完成工作吗?请。建议。
nginx - berks-api 不会在 azure 的 ubuntu 上运行 - 获得权限被拒绝 @ rb_sysopen - /etc/chef/client.pem
作为我们厨师基础设施的一部分,我正在尝试设置和配置 berks-api 服务器。我已经在 azure 中创建了一个 Ubuntu 服务器,并且我已经对其进行了引导,它在我的 chef-server 中显示为一个节点。
我已按照github - bekshelf-api installation上的说明通过说明书安装 berks-api。我跑了
在我的节点上,食谱似乎已成功运行。
问题是berks-api 似乎没有运行。我的 Linux 术语不太好,如果我说的话有误,很抱歉,但似乎 berks-api 服务无法运行。如果我导航到 /etc/service/berks-api 并运行此命令
我收到这个错误
如果有人可以帮助我弄清楚发生了什么,我将非常感激。如果您需要进一步解释设置,请告诉我。
linux - runit 会收获孤儿进程吗?
我正在编写一个基于Phusion baseimage的小型 Docker 容器,它提供了开箱即用的 runit。
我将 Cassandra 和 Opscenter 代理放入我的容器中。两者都作为 /etc/service 下的服务启动(如文档中所示)。
这篇博文提到 my_init 会收集僵尸进程,但对于它对孤立进程的作用却含糊其辞。
ps -ef
这是我的 Docker 容器中的示例输出:
注意runsv opscenter-agent
(pid 33) 启动一个子进程,它是一个带有子进程 (pid 471) 的 bash 调用 (pid 38)。
然后我跑了sv stop opscenter-agent
,然后ps -ef
:
注意 pid 38 消失了,但 pid 471 现在附加到my_init
.
这是正确的行为吗?我应该怎么做才能收获子进程?
ruby - 通过 runit 杀死工头子进程
我正在使用 runit 进行流程监督。我有以下简单的服务运行脚本:
这开始使用 RVM 包装器使用适当的 RVM 环境包装工头。一切都开始并运行良好,但是当我发出问题时,sv down myapp
我可以在日志中看到工头报告接收 SIGTERM 并且工头进程终止,但子 Web 和工作进程继续运行。
如果我只是使用 kill 而不是通过 runit 手动向工头发送 SIGTERM,也会发生此问题,因此可能不是特定于 runit 的。但是,如果我以交互方式运行工头,然后执行 Cc 以发送正常工作的 SIGINT。但是,通过 kill 发送 SIGINT 和 SIGKILL 不起作用。
有没有办法让工头在非交互式运行时终止它的子进程,就像我在我的 runit 脚本中一样?
ruby-on-rails - 如何使用 runit 监督 Rails 微服务
我正在尝试在我的 ubuntu 服务器上持续部署一些 rails 微服务,我认为 runit 可能是监督这些流程的好主意,然后在 chef 中使用迁移来更新微服务 - 但我坚持让一项服务工作。基本上安装似乎在 chef deploy 中工作,但应用程序没有启动并且没有在 3000 上监听(在杀死 server.pid 后从部署文件夹手动启动确实有效)
这是一台干净配置的机器,也是盒子上唯一的 rails 应用程序 - 所以我认为日志中提到的错误是我尝试启动它的症状。
任何有关这可能如何工作(替代方案)的提示都表示赞赏!
模板
看起来 nohup 不是这样做的方法 - 日志文件会产生这个。我不明白服务器是如何运行的 - 第一个日志条目说它已经在运行......但是
这会重复几次......直到不再记录此错误。
如果我 ps aux | grep rails it l 很多这些条目
食谱