问题标签 [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.

0 投票
1 回答
206 浏览

r - RUnit:找不到函数“checkEquals”

我正在创建一个具有标准目录层次结构的 R 包。在R目录中,我创建了一个test子目录。

R目录中,我创建了一个uTest.R文件,其中包含:

R/test目录中,我创建了一个runit.test.R文件,其中包含:

R CMD INSTALL --no-multiarch --with-keep.source RMixtComp我使用Rstudio构建和安装我的包。当我尝试启动该功能uTest()时,我收到以下错误消息:

但是,如果我在调用library(RUnit)之前调用uTest(),一切正常。在文件的import字段中DESCRIPTION,我添加了RUnit,在NAMESPACE我添加的文件中import(RUnit)

如何uTest()在加载我的包后直接调用,而无需手动加载 RUnit ?

0 投票
1 回答
401 浏览

python - 为需要密码的程序编写 runit 脚本

我编写了一个需要密码才能运行的 python 程序,我想在启动时安全地读取密码。我也想用 runit 来监督这个程序。

到目前为止,我的程序从环境变量“PASSPHRASE”中读取密码。我打算以这样一种方式启动它,即 runit 会在启动时设置变量:

但是,这种方法不起作用,并且永远无法到达实际启动程序的行。当我删除脚本的第一行时,程序以空密码开始。

您能否建议一种替代(安全)的处理方式?谢谢!

0 投票
1 回答
186 浏览

bash - 带启动/停止的 runit 调用脚本

我有一些 SysVinit 脚本start/stop,它们用于远程服务器部署,因为现在我将 runit 用于其他部署目的,并且不想复制脚本(维护原因)。是否有可能runit调用这些脚本?或其他方法?先感谢您。

0 投票
2 回答
253 浏览

bash - runit 调用脚本而不是服务命令

是否可以runit调用脚本而不是直接调用服务。例如,我有一个要启动的初始化脚本uwsgi。我可以在 runit init 脚本中调用这个脚本吗?先感谢您。

0 投票
1 回答
1579 浏览

linux - runit 的服务重启如何立即返回?

我有一项runit用于运行rails应用程序的服务unicorn

其重启命令使用信号 (USR2) 来处理零停机重启。基本上,它会等到新进程准备好后,旧进程才会死掉。

这会导致很长(40 秒)的重新启动时间,service myservice restart直到结束才会返回。

虽然我可以给 runit 一个更长的超时时间(我已经这样做了),但我想让这个重新启动成为一种即发即弃的动作,所以它会立即返回(或者在 USR2 信号被触发后,但无需等待它去完成。

整个逻辑取自多篇关于重启的零停机rails部署的博客文章:unicorn

这是runit脚本(由厨师生成):

0 投票
0 回答
205 浏览

docker - 无法通过 runit 在 Gitlab Docker 容器中自动启动 Subgit 同步

我本地的 Gitlab CE Docker 容器包含了 Subgit。当 Gitlab 容器重新启动时,Subgit 同步也应该自动启动。

我的解决方案来源于Dockerhub上gitlab/gitlab-ce的原始Dockerfile。在原始的 Dockerfile 中添加了一个 SSH 守护进程,并在 runit 的控制下进行设置。

我对 Subgit 做了同样的事情。在/opt/gitlab/sv/subgit 下是我的 runit 资源,通过设置指向/opt/gitlab/service目录的软链接来启用 subgit。但是当 Gitlab Container 启动时,软链接被删除,因此 runsvdir 忽略了我的 Subgit runit 文件。当手动启用软链接时,runsvdir 正在成功启动 Subgit 同步。

如何保持软链接并分别启用Subgit的自动启动?


这是 Dockerfile 中关于 Subgit 和 runit 的部分:

这是 runit 的运行文件。真实的 Gitlab 组和项目名称被替换。

0 投票
1 回答
299 浏览

linux - ctrl+c 不杀进程

CTRL+C我有一个在我的本地机器上响应完美的进程。它似乎也在起作用。

但是在 EC2 实例上,它会冻结并成为已失效或僵尸进程。

kill -9 <PID>不会删除它,我必须重新启动 EC2 实例才能正确清理它。

当它运行时,它还会加载一个内部开发的共享库,我对此没有影响,也无法访问其中的任何源代码来查看它在做什么。这个库也使用 CUDA 并且似乎启动了多个线程。

我尝试在主线程上安装一个信号处理程序,它确实安装了,但调用_exit并没有关闭整个过程,它似乎仍在等待。

为什么这里会发生阻止CTRL+C干净退出进程的情况?我可以覆盖或检查其他线程可能在做什么吗?

0 投票
1 回答
115 浏览

ruby-on-rails - Rails5 - 为服务编写单元测试的最佳方法是什么?

在我的应用程序中,我有多项服务(纯红宝石)。实施单元测试的最佳方法是什么?我应该为控制器实施额外的单元测试,还是只为服务创建单独的测试?

更新 - 实施的解决方案:

  1. UserService 的专用测试 (test/services/user_service_test
  2. 创建新员工的单元测试包括验证是否调用了 UserService.create_user_for_employee 方法。测试基于 Minitest::Mock。它需要“minitest/autorun”(在 test_helper 中需要“minitest/autorun”)

员工控制器测试:

0 投票
1 回答
216 浏览

runit - runit 是否支持延迟首次启动

我遇到了关于 runit 服务引导程序的问题。该服务将设置并卷曲一个外部服务端点以获取其数据。它将一遍又一遍地重新启动并继续发送请求,直到数据准备好用于外部服务。

所以我认为有补救措施来减少延迟 runit 服务第一次运行脚本的请求。但是我找不到任何方法来延迟 runit 服务。runit 支持是否将其服务延迟到第一次启动?或者解决方案有什么改进?

顺便说一句,该服务将在系统启动时设置。

0 投票
2 回答
936 浏览

bash - 如果进程告诉自己停止运行,则 Runit 退出并出现错误

我看到 runit 出现一些意外行为,不知道如何让它做我想做的事情,而不会在终止期间引发错误。我有一个进程有时知道它应该停止自己而不是让自己重新启动(因此应该sv d自己调用)。如果我从不更改用户,但如果我在运行时切换到非 root 用户会产生错误,则此方法有效。

我将对finish这两个示例使用相同的脚本:

run按预期工作的脚本(打印downtest finished with exit code 0 and exit status 0到系统日志):

run无法按预期工作的脚本(打印downtest finished with exit code -1 and exit status 15到系统日志):

如果我使用su ubuntu而不是chpst.

关于我为什么看到这种行为以及如何修复它的任何想法,以便调用sudo sv d downtest导致干净的进程退出而不是返回错误状态代码?