使用 cron 压缩并删除 Linux 上 jboss 的日志

使用 cron 压缩并删除 Linux 上 jboss 的日志

我需要在一段时间后从服务器压缩并删除日志文件。我以前从未写过脚本。到目前为止,我有脚本logs.sh

#!/bin/bash
LOGS=/usr/local/jboss/server/default/log/
INFOLOG="server.log"
ERRORLOG="error.log"
BOOTLOG="boot.log"

# gzip files last modify at least 7 days ago, and not files that are identified above and that have already been compressed
find $LOGS -mtime +7 -not -name "$INFOLOG" -not -name "$ERRORLOG" -not -name "$BOOTLOG" -not -name '*.gz' -exec gzip "{}" \;

# remove all logs older than 90 days
find $LOGS -mtime +90 -not -name "$INFOLOG" -not -name "$ERRORLOG" -not -name "$BOOTLOG" -print0 | xargs -0 -I xxx rm xxx 

我使用 cron 在凌晨 1 点后每 5 分钟执行一次jboss-logs.sh

5 1 * * * /usr/local/jboss/server/default/logs.sh

并添加 croncrontab /root/jboss-logs.sh

这是正确的吗?它会压缩超过 7 天的文件并删除超过 90 天的文件吗?它会起作用吗?它是安全的 - 尤其是删除?

答案1

用于logrotate旋转日志。

/etc/logrotate.d/你会发现一些已经安装的旋转图案。

您基本上定义了每天处理文件的模式。

Logrotate 正在被触发每日计划

用于man logrotate了解更多有关简单的、基于行的语法的信息。

答案2

newsyslog.conf包含您所需要的内容。

newsyslog定期检查文件并旋转/压缩/删除文件。还newsyslog可以向启动日志文件重新打开的进程发送信号。

相关内容