> /var/log/messages/*
时间: 2023-07-05 09:29:13 浏览: 141
非常抱歉,我的回答有误。正确的命令应该是:
```
*/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' | sort | head -n -5 | xargs rm -f
```
这个命令的含义和之前的命令基本一致,只是在使用 head 命令删除文件时,指定为 head -n -5,表示只保留最新的 4 个压缩文件,删除超过 4 个的文件。同时,在清空 /var/log/messages 目录下的文件时,应该使用以下命令:
```
> /var/log/messages/*
```
这个命令表示清空 /var/log/messages 目录下的所有文件内容,但不包括子目录。
非常感谢您的指正,希望我的回答可以帮助到您。
相关问题
> /var/log/messages/* 什么意思
非常抱歉,我的回答有误。这段命令中的 "> /var/log/messages/*" 实际上是将 /var/log/messages 目录下所有的文件内容清空,这显然不是您的需求。正确的命令应该是:
```
*/5 * * * * tar -zcvf /var/log/messages_$(date +\%Y\%m\%d\%H\%M\%S).tar.gz /var/log/messages && rm -f $(ls -t /var/log/messages*.tar.gz | awk 'NR>4')
```
这个命令的含义是:每 5 分钟执行一次,将 /var/log/messages 目录下的文件打包成一个以当前时间命名的 .tar.gz 压缩文件。同时,使用 ls 命令查找所有以 messages 开头的压缩文件,并使用 awk 命令保留最新的 4 个文件名。最后使用 rm 命令删除除这 4 个文件外的所有文件。
非常抱歉之前的回答有误,希望这次的回答可以帮助到您。
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')
这是一个定时任务,每周日的 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 目录下最近的四个压缩文件以外的所有压缩文件。
需要注意的是,命令中使用了一些特殊符号,如 % 和 \,需要进行转义。
阅读全文