我正在制作一个小脚本,以帮助我根据此Question管理大量日志文件。
我添加了我需要的其他要求:
- 查找.log文件> 2天(这更适合安全预防措施)
- 创建日志文件的MD5哈希
- 删除原始日志文件
!/bin/bash
# 1) Find .log files > 2 days
# 2) Determine filename
# 3) gzip filename
# 4) Create gzip MD5
# 5) Remove original file
function compress_file {
BASENAME=`/bin/basename "$1"`;
/bin/gzip -c "$1" > /var/logs/$BASENAME.gz;
/usr/bin/md5sum /var/logs/$BASENAME.gz > /var/logs/$BASENAME.gz.md5
/bin/rm /var/logs/$BASENAME
}
export -f compress_file;
/bin/find /var/logs -iname "*.log" -mtime +2 -exec /bin/bash -c 'compress_file "$0"' {} \;
export -fn compress_file;
由于这是一项关键操作,我想将一些输出编码到日志文件(甚至发送到syslog)以进行审计和故障排除。
UPDATE:另外还要记录到记录器,如果由于$ BASENAME仅处理文件名而没有考虑到文件名,那么如何按年/月/日存储日志文件?动态目录。
/var/log//2015/08/10/data1.log
/var/log//2015/08/10/data2.log
/var/log//2015/08/10/data3.log
/var/log//2015/08/11/data1.log
/var/log//2015/08/11/data2.log
/var/log//2015/08/11/data3.log
答案 0 :(得分:0)
您可以使用 logger 命令将消息写入syslog。只需在任何操作之前写入日志消息。像:
Logger "Remove $BASENAME"
/bin/rm /var/logs/$BASENAME
您还可以验证关键命令的结果。只需检查" $?"执行任何命令后的变量。它包含执行结果。