旋转 nohup 输出

twe*_*sat 3 log 12.04 nohup

我正在 ubuntu 12.04 下使用 weblogic 10.3.5。

Weblogic 开始使用

nohup ./startWebLogic.sh >Oracle/Middleware/user_projects/domains/base_domain/servers/AdminServer/logs/AdminServer.out 2>&1 </dev/null &
Run Code Online (Sandbox Code Playgroud)

它工作正常,现在我想旋转AdminServer.out使用,logrotate但似乎并不容易做到。在互联网上搜索并不清楚是否可能。

我尝试使用这些copytruncate选项。当 logrotate 正在执行时,文件的大小变为 0,但在服务器的第一次“写入”后返回到原始大小。

还尝试重命名文件。服务器仍然写入重命名的文件。

服务器似乎只有一个指向文件的指针,而与文件的名称或大小无关。

所以……有解决办法吗?是否使用 logrotate。

- 编辑 -

我也试过

#!/bin/bash
mkdir -p tmp
if [ ! -p tmp/weblogic.fifo ]; then
    mkfifo tmp/weblogic.fifo
fi
tail -f tmp/weblogic.fifo >> Oracle/Middleware/user_projects/domains/base_domain/servers/AdminServer/logs/AdminServer.out &
nohup ./startWebLogic.sh > /home/me/tmp/weblogic.fifo 2>&1 </dev/null &
Run Code Online (Sandbox Code Playgroud)

我不知道它是否正确,但是...至少有一个问题:有时,它会挂断写入文件。有时几秒钟但过了一会儿(甚至在服务器启动之前)......无限期!

所以我无法测试 logrotate。

Jde*_*eBP 5

忘记对logrotate. 你一开始就不需要logrotate。这是自 1990 年代中期以来已经解决的问题。

给自己一个或多个:

并以正常方式通过管道将脚本标准输出和标准错误发送到其标准输入:

./startWebLogic.sh 2>&1 | 循环日志/

他们将在您指定的目录中写入一组自动循环、按需轮换、严格限制大小的日志,根本不需要任何额外的日志轮换程序。他们都不需要任何超级用户权限。(事实上​​,在他们最广为人知的用例中,最好的做法是记录守护进程输出,在非特权帐户下运行它们,而不是需要或期望超级用户权限。)

进一步阅读