进一步阅读

进一步阅读

我在 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 &

它运行良好,现在我想旋转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 &

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

所以我无法测试logrotate。

答案1

忘记对 的需求。你一开始就logrotate不需要。这个问题自 20 世纪 90 年代中期以来就已得到解决。logrotate

获取以下一项或多项:

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

./startWebLogic.sh 2>&1 | cyclog 日志/

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

进一步阅读

答案2

解决方案最终非常简单

nohup ./startWebLogic.sh 2>&1 </dev/null | cat >> AdminServer.out &

现在AdminServer.out可以用logrotate 选项copytruncate

相关内容