进一步阅读

进一步阅读

我正在使用 runit 运行程序在启动时运行。我希望将 runit 运行的程序的所有输出记录到文件中。

我看过svlogd但我不知道如何让它运行。

答案1

我不知道如何让它运行。

在 daemontools 系列世界中,日志服务与其他服务一样。因此,您运行svlogd一个run程序就像使用一个run程序运行“主”服务一样。

“日志”服务的特殊之处仅在于:

  • “log”服务目录使用来自“main”服务目录(或其直接子目录)的符号链接来定位。
  • 一些(但不是全部)daemontools 系列工具集紧密绑定“日志”和“主”服务,并将两者作为一个单元进行操作。在某种程度上,runit 就是这种情况。

否则,它们就像其他一切一样。

因此,创建一个“日志”服务来运行svlogd,就像创建任何其他服务一样,将其放在相对于“主”服务的正确位置,然后启动。

进一步阅读

答案2

您要做的第一件事是找出 runit 文件在系统上的位置。通常是/etc/runit/.在那里,您将找到一个名为 的目录sv,其中为每个服务创建一个目录。

假设您想要创建一个名为 的新服务food。您将创建一个名为foodin的目录/etc/runit/sv/

# mkdir /etc/runit/sv/food

在 中创建一个run脚本/etc/runit/sv/food。假设您的服务程序是可执行文件,位于/opt/bin/foo。在这种情况下,你的run脚本将是这样的。

#!/bin/sh
exec /opt/bin/foo 2>&1

对于日志记录,您应该在/etc/runit/sv/food名为 的目录中创建另一个目录log。其中还有另一个run脚本。

#!/bin/sh
exec svlogd -tt <logs-directory>

确保<logs-directory>出口。并且不要忘记使这两个run脚本都可执行。

# chmod +x /etc/runit/sv/food/run
# chmod +x /etc/runit/sv/food/log/run

food在里面创建一个目录的符号链接/etc/runit/runsvdir/default

# ln -s /etc/runit/sv/food /etc/runit/runsvdir/default/

要手动启动/停止您的服务,只需运行:

# sv start food
# sv stop food

抢夺这一点快速入门指南更多细节。

请注意,与指南不同,我chpst在示例中没有使用。在这种情况下,food服务将作为 运行rootchpst如果您希望服务作为特定用户运行,请按照指南的建议使用。

相关内容