首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用runit将输出记录到日志文件

如何使用runit将输出记录到日志文件
EN

Unix & Linux用户
提问于 2015-06-14 14:07:30
回答 2查看 3.7K关注 0票数 4

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

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

EN

回答 2

Unix & Linux用户

回答已采纳

发布于 2015-06-14 14:32:30

我想不出怎么让它运转起来。

在daemontools家族世界中,日志服务和其他服务一样,只是服务。因此,您使用svlogd程序运行run,就像使用run程序运行“主”服务一样。

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

  • "log“服务目录使用来自"main”服务目录的符号链接(或位于“main”服务目录下的直子目录)定位。
  • 一些(但不是所有) daemontools家族工具集将"log“和"main”服务紧密绑定,并作为一个单元对twain进行操作。这在一定程度上是runit的情况。

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

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

再读

  • Jonathan de Boyne Pollard (2015年)。“伐木”。守护进程工具家族。经常给出答案。
  • 杰瑞特·帕普。“如何使用附属品日志服务创建新的服务目录?”。runit经常问问题。
  • 丹尼尔·伯恩斯坦。“如何使用日志创建服务目录?”。守护进程工具经常被问到问题。
票数 5
EN

Unix & Linux用户

发布于 2021-03-02 23:29:41

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

假设您希望创建一个名为food的新服务。您将在food中创建一个名为/etc/runit/sv/的目录。

代码语言:javascript
复制
# mkdir /etc/runit/sv/food

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

代码语言:javascript
复制
#!/bin/sh
exec /opt/bin/foo 2>&1

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

代码语言:javascript
复制
#!/bin/sh
exec svlogd -tt <logs-directory>

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

代码语言:javascript
复制
# chmod +x /etc/runit/sv/food/run
# chmod +x /etc/runit/sv/food/log/run

创建food目录在/etc/runit/runsvdir/default中的符号链接

代码语言:javascript
复制
# ln -s /etc/runit/sv/food /etc/runit/runsvdir/default/

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

代码语言:javascript
复制
# sv start food
# sv stop food

想了解更多细节,请在这个快速启动指南上打劫一下。

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

票数 0
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/209574

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档