用最简单的方法完成这个目标
#!/bin/bash
# 获取当前日期
today=$(date +%Y%m%d)
# 获取前一天的日期
yesterday=$(date -d yesterday +%Y%m%d)
# 检查 neutron.log 文件是否存在
if [ ! -f /var/log/neutron/server.log ]; then
echo "neutron.log 文件不存在"
exit 1
fi
# 检查 neutron.log 文件的大小是否为零
if [ -s /var/log/neutron/server.log ]; then
# 将 neutron.log 文件前一天的日志打包成 server{yesterday}.log 文件
mv /var/log/neutron/server.log /var/log/neutron/server${yesterday}.log
else
echo "neutron.log 文件为空"
touch /var/log/neutron/server.log
fi
将该脚本保存为一个名为 backup_log.sh
的文件。以下是设置脚本执行的示例:
这里要注意 chmod -R 777?/var/log/neutron/backup_log.sh?不然没有权限也是执行不了的
然后接下来在命令行执行
# 将脚本设置为每天 0 点执行
crontab -e
# 会进入编辑文件
# 在末尾添加以下内容
0 0 * * * /var/log/neutron/backup_log.sh
在 crontab 文件中,每个任务都由六个参数组成,分别表示:
执行上述命令后,脚本将每天 0 点执行一次,并将 /var/log/neutron/server.log 文件前一天的日志打包成 /var/log/neutron/server{yesterday}.log 文件。