gpt4 book ai didi

linux - 为什么我得到 "s6-log: fatal: unable to open_append/run/service/app/lock: Not a directory"?

转载 作者:太空宇宙 更新时间:2023-11-04 11:45:07 26 4
gpt4 key购买 nike

我正在了解 s6我已经到了想要使用 s6-log 的地步。我有以下 Dockerfile

FROM alpine:3.10

RUN apk --no-cache --update add s6

WORKDIR /run/service

COPY \
./rootfs/run \
./rootfs/app /run/service/

CMD ["s6-supervise", "."]

./rootfs/app 只是一个简单的sh 脚本

#!/bin/sh

while true;
do
sleep 1
printf "Hello %s\n" "$(date)"
done

运行正在

#!/bin/execlineb -P
fdmove -c 2 1
s6-log -b n20 s1000000 t /var/log/app/
/run/service/app

为什么我总是收到

s6-log: fatal: unable to open_append /run/service/app/lock: Not a directory

?没有 s6-log 行,一切正常。

最佳答案

看来我一直做错了。也就是说,我应该使用 s6-svscan 而不是 s6-supervice。使用s6-svscan我可以在我的服务目录中创建一个 log/ 子目录,以便我的应用程序的标准输出被重定向到记录器的标准输入,如 s6-svscan 的网站所述:

For every new subdirectory dir it finds, the scanner spawns a s6-supervise process on it. If dir/log exists, it spawns a s6-supervise process on both dir and dir/log, and maintains a never-closing pipe from the service's stdout to the logger's stdin.

我编写了这样的运行脚本:

#!/bin/execlineb -P
s6-log -b n20 s512 T /var/log/app

然后我将 CMD 更改为

CMD ["s6-svscan", "/run/"]

其中 /run/service/ 包含我的服务的 run 脚本(没有 s6-log 调用)和 log 子目录,其中包含上面的 run 脚本。

关于linux - 为什么我得到 "s6-log: fatal: unable to open_append/run/service/app/lock: Not a directory"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58050700/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com