【发布时间】:2017-05-09 11:31:26
【问题描述】:
我正在尝试将连续运行程序的输出重定向到文件error_log。
我使用的命令看起来像这样,myprogram.sh 不断运行生成数据并写入/var/log/httpd/error_log
myprogram.sh >> /var/log/httpd/error_log
现在我使用logrotate 每小时轮换这个文件。我在logrotate 中使用create 命令,以便它重命名原始文件并创建一个新文件。
logrotate 配置看起来像
/var/log/httpd/error_log {
# copytruncate
create
rotate 4
dateext
missingok
ifempty
.
.
.
}
但是这里重定向失败。我想要的是myprogram.sh 将数据写入error_log 文件,而不管它是否被logrotate 旋转,显然是新生成的error_log 文件
知道如何根据文件名和非 描述符进行重定向吗?
或
在 bash 中还有其他方法吗?
【问题讨论】:
-
我不明白这个问题。当您进行输出重定向时,它使用文件名,而不是描述符。你能展示你的脚本吗?
-
是的,能否请您也显示一下您使用过的整个
logrotate命令? -
为什么不使用 copytruncate,因此 myprogram.sh 可能会继续写入(附加)到前一个日志文件。你不会有 create 的问题(就像 mv)。
标签: linux bash redirect logrotate