如何配置runit日志记录

我在使用运行正确记录设置服务时遇到问题.以下是我根据runit的文档和我在internt中找到的其他资源创建的文件和脚本的简要概述:

我在debian下使用runit,因此:

/ etc / service / test – >链接到/ etc / sv / test.

在`/ etc / sv / test下:

$ls /etc/sv/test
finish  log  run
$ls /etc/sv/test/log
config  run

脚本运行和完成非常简单:

root@data1:/etc/sv/test $cat /etc/sv/test/run
#!/bin/sh

touch /tmp/pid
echo $$> /tmp/pid

while true; do
    date
    sleep 3
done
root@data1:/etc/sv/test $cat /etc/sv/test/finish
#!/bin/sh

kill `cat /tmp/pid`

日志也非常简单:

cat / etc / sv / test / log / run

#!/bin/sh
exec svlogd -t /var/log/test

目录/ var / log / test存在,服务运行.

$sv s test
run: test: (pid 11547) 536s; down: log: 1s, normally up, want up

但是日志目录是空的……我错过了什么?所有日志信息在哪里?

更新:

我还确保所有脚本都是可执行的.

更新2:

似乎sv由于某种原因无法启动日志记录脚本!

$sv s test
run: test: (pid 14612) 5s; down: log: 0s, normally up, want up

更新3:

如果要停止日志记录脚本,则必须发出:

$sv d test/log
最佳答案
你的问题中有很多事情需要解决与问题无关(咳嗽pid文件咳嗽),但让我们正确解决这个问题.

首先,日志记录是可选的.没有硬性要求您有一个服务器定义的记录器,尽管在大多数情况下您需要一个.

其次,因为记录器是从事服务的事实,所以./log保存日志所需的设置是有道理的.

第三,当您关闭服务时,记录器会因某种原因而继续运行 – 它将捕获剩余数据,直到服务终止.这样做是为了防止丢失日志记录数据,不仅在服务停止时,而且如果服务崩溃.即使服务已关闭,记录器仍然可以正常运行.启动服务只会将新服务实例重新连接到现有记录器.

第四,你是对的,你可以通过使用sv命令显式命名它来停止记录器.这与现有的daemontools范例保持一致.

第五,除非你有注册svlogd程序失败的异常需求(极不可能),你不需要担心杀死它等等.只是发信号通知它会导致runv监督进程终止它,没有PIDs或杀死所需的命令.

如果您还有其他问题,我建议您联系supervision mailing list,它噪音低,并且有很多知识渊博的人来回答您的问题.也可以在mail-archive.org找到只读镜像.

转载注明原文:如何配置runit日志记录 - 代码日志