代码
cat > my_daily.sh<<EOF
#!/bin/bash
dir=/path/to/logs;
file=my.log;
date_file=$file-$(date +%Y%m%d); # 形如my.log-20160620
# 删除20天前的日志归档
find $dir -mtime +20 -name "$file-*.tar.gz" -exec rm -rf {} \;
# 归档当前的日志文件. 注意, 这里使用/bin/cp而非cp, 是因为有些系统中cp是个alias: alias cp='cp -i',会导致无法强制覆盖已有文件
cd $dir && /bin/cp -f $file $date_file && echo > $file && tar -czf $date_file.tar.gz $date_file && rm -f $date_file;
EOF
/bin/cp -f my_daily.sh /etc/cron.daily/
chmod a+x /etc/cron.daily/my_daily.sh