问题标签 [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.
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 ?
python - 为需要密码的程序编写 runit 脚本
我编写了一个需要密码才能运行的 python 程序,我想在启动时安全地读取密码。我也想用 runit 来监督这个程序。
到目前为止,我的程序从环境变量“PASSPHRASE”中读取密码。我打算以这样一种方式启动它,即 runit 会在启动时设置变量:
但是,这种方法不起作用,并且永远无法到达实际启动程序的行。当我删除脚本的第一行时,程序以空密码开始。
您能否建议一种替代(安全)的处理方式?谢谢!
bash - 带启动/停止的 runit 调用脚本
我有一些 SysVinit 脚本start/stop
,它们用于远程服务器部署,因为现在我将 runit 用于其他部署目的,并且不想复制脚本(维护原因)。是否有可能runit
调用这些脚本?或其他方法?先感谢您。
bash - runit 调用脚本而不是服务命令
是否可以runit
调用脚本而不是直接调用服务。例如,我有一个要启动的初始化脚本uwsgi
。我可以在 runit init 脚本中调用这个脚本吗?先感谢您。
linux - runit 的服务重启如何立即返回?
我有一项runit
用于运行rails
应用程序的服务unicorn
。
其重启命令使用信号 (USR2) 来处理零停机重启。基本上,它会等到新进程准备好后,旧进程才会死掉。
这会导致很长(40 秒)的重新启动时间,service myservice restart
直到结束才会返回。
虽然我可以给 runit 一个更长的超时时间(我已经这样做了),但我想让这个重新启动成为一种即发即弃的动作,所以它会立即返回(或者在 USR2 信号被触发后,但无需等待它去完成。
整个逻辑取自多篇关于重启的零停机rails
部署的博客文章:unicorn
- https://gist.github.com/czarnecid/4639793
- https://gist.github.com/JeanMertz/8996796
- https://nulogy.com/who-we-are/company-blog/articles/zero-downtime-deployments-with-chef-nginx-and-unicorn/
这是runit
脚本(由厨师生成):
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 组和项目名称被替换。
linux - ctrl+c 不杀进程
CTRL+C
我有一个在我的本地机器上响应完美的进程。它似乎也在起作用。
但是在 EC2 实例上,它会冻结并成为已失效或僵尸进程。
kill -9 <PID>
不会删除它,我必须重新启动 EC2 实例才能正确清理它。
当它运行时,它还会加载一个内部开发的共享库,我对此没有影响,也无法访问其中的任何源代码来查看它在做什么。这个库也使用 CUDA 并且似乎启动了多个线程。
我尝试在主线程上安装一个信号处理程序,它确实安装了,但调用_exit
并没有关闭整个过程,它似乎仍在等待。
为什么这里会发生阻止CTRL+C
干净退出进程的情况?我可以覆盖或检查其他线程可能在做什么吗?
ruby-on-rails - Rails5 - 为服务编写单元测试的最佳方法是什么?
在我的应用程序中,我有多项服务(纯红宝石)。实施单元测试的最佳方法是什么?我应该为控制器实施额外的单元测试,还是只为服务创建单独的测试?
更新 - 实施的解决方案:
- UserService 的专用测试 (test/services/user_service_test
- 创建新员工的单元测试包括验证是否调用了 UserService.create_user_for_employee 方法。测试基于 Minitest::Mock。它需要“minitest/autorun”(在 test_helper 中需要“minitest/autorun”)
员工控制器测试:
runit - runit 是否支持延迟首次启动
我遇到了关于 runit 服务引导程序的问题。该服务将设置并卷曲一个外部服务端点以获取其数据。它将一遍又一遍地重新启动并继续发送请求,直到数据准备好用于外部服务。
所以我认为有补救措施来减少延迟 runit 服务第一次运行脚本的请求。但是我找不到任何方法来延迟 runit 服务。runit 支持是否将其服务延迟到第一次启动?或者解决方案有什么改进?
顺便说一句,该服务将在系统启动时设置。
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
导致干净的进程退出而不是返回错误状态代码?