0 0 * * 0 tar -zcvf /var/log/messages-$(date +\%Y\%m\%d\%H\%M\%S).tar.gz /var/log/messages && > /var/log/messages && rm -f $(ls -t /var/log/messages*.tar.gz | awk 'NR>4')
时间: 2023-09-02 15:09:55 浏览: 168
这是一个定时任务,每周日的 00:00 将 /var/log/messages 文件夹下的日志文件进行压缩并清空,同时只保留最近的四个压缩文件。具体操作如下:
1. tar -zcvf /var/log/messages-$(date +\%Y\%m\%d\%H\%M\%S).tar.gz /var/log/messages:将 /var/log/messages 目录下的所有文件和子目录打包成一个以当前日期和时间命名的压缩文件。
2. > /var/log/messages:将 /var/log/messages 文件清空,即删除其中的所有内容。
3. rm -f $(ls -t /var/log/messages*.tar.gz | awk 'NR>4'):删除 /var/log/messages 目录下最近的四个压缩文件以外的所有压缩文件。
需要注意的是,命令中使用了一些特殊符号,如 % 和 \,需要进行转义。
相关问题
每5分钟将 /var/log/messages 目录下的文件打包成一个以当前时间命名的 .tar.gz 压缩文件,并清空 /var/log/messages 目录下的所有文件内容,最多存在4个
好的,根据您的要求,可以使用以下命令来实现:
```
*/5 * * * * tar -zcvf /var/log/messages_$(date +\%Y\%m\%d\%H\%M\%S).tar.gz /var/log/messages && > /var/log/messages/* && find /var/log/ -maxdepth 1 -type f -name 'messages_*.tar.gz' -mtime +1 -exec rm {} \;
```
这个命令的含义是:每5分钟执行一次,将 /var/log/messages 目录下的文件打包成一个以当前时间命名的 .tar.gz 压缩文件,并清空 /var/log/messages 目录下的所有文件内容。同时,使用 find 命令删除超过1天的压缩文件,以确保目录下最多存在4个压缩文件。
需要注意的是,这种频繁的打包和清空操作可能会对系统性能产生一定的影响,因此需要根据实际情况进行调整。如果对系统性能有要求,可以将时间间隔调整为更长的时间,如每小时执行一次。
在每周的第一天(星期日)的 0 点整,将 /var/log/messages 目录下的文件打包成一个以当前时间命名的 .tar.gz 压缩文件,并清空 /var/log/messages 目录下的所有文件内容,最多存在4个
好的,根据您的要求,可以使用以下命令来实现:
```
0 0 * * 0 tar -zcvf /var/log/messages_$(date +\%Y\%m\%d\%H\%M\%S).tar.gz /var/log/messages && > /var/log/messages/* && find /var/log/ -maxdepth 1 -type f -name 'messages_*.tar.gz' -mtime +28 -exec rm {} \;
```
这个命令的含义是:在每周的第一天 0 点整(星期日),将 /var/log/messages 目录下的文件打包成一个以当前时间命名的 .tar.gz 压缩文件,并清空 /var/log/messages 目录下的所有文件内容。同时,使用 find 命令删除超过 28 天的压缩文件,以确保目录下最多存在 4 个压缩文件。
希望这个回答能够帮助您!
阅读全文