我需要在一段时间后从服务器压缩并删除日志文件。我以前从未写过脚本。到目前为止,我有脚本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
可以向启动日志文件重新打开的进程发送信号。