在每周的第一天(星期日)的 0 点整,将 /var/log/messages 目录下的文件打包成一个以当前时间命名的 .tar.gz 压缩文件,并清空 /var/log/messages 目录下的所有文件内容,最多存在4个
时间: 2023-12-08 18:04:03 浏览: 71
常用的系统日志-linux系统基础
可以使用以下的 crontab 命令来实现你的要求:
```shell
0 0 * * 0 sh /path/to/your/script.sh
```
其中 `/path/to/your/script.sh` 指的是你的 shell 脚本的路径,这个脚本应该包含以下内容:
```shell
#!/bin/bash
# 设置需要操作的目录和文件名
dir="/var/log"
file="messages"
max_files=4
# 进入目标目录
cd $dir
# 统计当前目录下的 .tar.gz 文件数量
count=$(ls -1 *.tar.gz 2>/dev/null | wc -l)
# 判断数量是否超过最大值
if [ $count -ge $max_files ]; then
# 如果超过了最大值,找到最早的文件并删除
oldest_file=$(ls -t *.tar.gz | tail -1)
rm $oldest_file
fi
# 获取当前时间并格式化输出
timestamp=$(date +%Y%m%d%H%M%S)
# 打包目标文件并以当前时间命名
tar -zcvf ${file}-${timestamp}.tar.gz $file
# 清空目标文件
> $file
```
这个脚本会在每周的第一天(星期日)的 0 点整,执行打包并清空操作。同时,它会检查目标目录下的 .tar.gz 文件数量是否超过了最大值,如果超过了,则会删除最早的文件。最终生成的打包文件名中包含了当前时间戳。
阅读全文