我/etc/sv/<service>/log/current
在该服务运行时删除了文件,并希望获得一组干净的日志。但是,当我这样做时sudo service <service> restart
,我发现current
文件没有重新创建,我找不到新日志要存放到哪里。然后我尝试自己创建文件,甚至给了最宽松的写入权限,但发现文件仍然没有被写入。这是ls -la
这个目录(在我创建文件之后current
):
-rwxr--r-- 1 root root 92989 Sep 26 18:08 @400000005d8cfea82484f9e4.s
-rwxr--r-- 1 root root 353827 Sep 26 19:08 @400000005d8d0cb826d2f50c.s
-rwxr--r-- 1 root root 272084 Sep 26 19:45 @400000005d8d1ac8286c4a1c.s
-rwxr--r-- 1 root root 332117 Sep 26 21:00 @400000005d8d28d82f65f304.s
-rwxr--r-- 1 root root 1678531 Sep 26 22:08 @400000005d8d36e8308de4bc.s
-rwxr--r-- 1 root root 2143833 Sep 26 23:08 @400000005d8d44f831d170dc.s
-rwxr--r-- 1 root root 1549498 Sep 27 00:08 @400000005d8d5308332767d4.s
-rw-r--r-- 1 root root 33 Jan 31 2019 config
-rwxrwxrwx 1 root root 0 Sep 27 00:43 current
-rw------- 1 root root 0 Jan 31 2019 lock
drwxr-xr-x 2 root root 4096 Jan 31 2019 main
-rwxr-xr-x 1 root root 40 Jan 31 2019 run
drwx------ 2 root root 4096 Feb 21 2019 supervise
我该怎么做才能恢复current
日志并重新启动此服务上的日志轮换?
ps auxf
给我这一行看起来很有趣的内容:
root 1269 0.0 0.0 176 44 ? Ss Feb21 0:17 \_ runsv <service>
root 1272 0.0 0.0 200 56 ? S Feb21 15:41 | \_ svlogd -b 2048 -l 2000 .
root 29245 0.0 3.9 503232 299256 ? Sl 00:55 0:22 | \_ /usr/bin/python3 <some service>
我可以在这里看到日志子服务,但我不确定可以使用什么命令来重新启动该子服务本身。
答案1
日志文件(通常)由子服务而不是主服务写入log
。您需要重新启动log
子服务,以便它关闭正在写入的文件并重新打开它。