我正在尝试处理s6-log
我编写的服务文件。服务文件如下所示:
#!/usr/local/bin/execlineb -P
/usr/local/bin/s6-setuidgid [username]
/usr/bin/[actual_service]
我还创造了[servicedir]/log/run
,这只是
#!/usr/local/bin/execlineb -P
/usr/local/bin/s6-log T /var/log/[servicename]
启动后,s6-logger 正在运行,/var/log/[servicename]/current
创建得很好,但它是空的。我甚至检查了服务是否正在写出内容以strace -p [supervisor pid] -f
捕获启动消息……并且它工作正常,将内容写入文件描述符 2,即 stderr。
为什么这没有写入日志文件?
答案1
注意... 到文件描述符 2,即 stderr部分。
s6-supervise
只会拾取写入 stdout 的日志。它将忽略 stderr,除非明确将其重定向到 stdout,例如通过添加
fdmove -c 2 1
到服务运行脚本。