我正在运行程序使用runit在启动时运行。我希望runit运行的程序的所有输出都被记录到一个文件中。
我看过svlogd,但不知道如何运行它。
发布于 2015-06-14 14:32:30
我想不出怎么让它运转起来。
在daemontools家族世界中,日志服务和其他服务一样,只是服务。因此,您使用svlogd程序运行run,就像使用run程序运行“主”服务一样。
“日志”服务的特殊之处仅仅是:
否则,他们就像其他一切一样。
因此,创建一个“日志”服务来运行svlogd,就像您做任何其他服务一样,将它放在相对于"main“服务的正确位置,然后启动。
发布于 2021-03-02 23:29:41
您必须做的第一件事是找出runit文件在系统中的位置。通常是/etc/runit/。在这里,您将找到一个名为sv的目录,在其中每个服务创建一个目录。
假设您希望创建一个名为food的新服务。您将在food中创建一个名为/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服务将以root的形式运行。如果您希望您的服务以特定用户的身份运行,请按照指南的建议使用chpst。
https://unix.stackexchange.com/questions/209574
复制相似问题