2

一、查找删除

在项目目录下创建shell文件

# touch clear-log.sh   // 创建clear-log.sh文件
# chmod +x clear-log.sh  //给clear-log文件加可执行权限

在新创建的文件中加入脚本

#!/bin/sh
find /Users/lvmoumou/marry/log-storage/logs_store/ -mtime +30 -name "*.log" -exec rm -rf {} \;

其中+30代表查询三十天前的文件,-exec rm -rf {} ;是固定写法,表示强制删除包括目录。下一步只需要在当前目录下执行./clear-log.sh即可实现删除30天前的日志啦。

二、设置脚本自动执行

有了第一步只完成了我们想要的一半内容,删除可以了,如何设置自动删除呢。
在终端输入#crontab -e编辑自动执行任务。执行后输入i,编辑任务命令,命令如下

50 10 * * * /Users/lvmoumou/marry/log-storage/clear-log.sh >/dev/null 2>&1 

50,10代表在10点50分时执行/Users/lvmoumou/marry/log-storage/clear-log.sh这个文件,后面的>/dev/null 2>&1的前半部分>/dev/null:表示标准输出重定向到空设备文件,也就是不输出任何信息到终端,不显示任何信息。后半部分2>&1:接着,标准错误输出重定向到标准输出,因为之前标准输出已经重定向到了空设备文件,所以标准错误输出也重定向到空设备文件。
这条命令的意思就是在后台执行这个程序,并将错误输出2重定向到标准输出1,然后将标准输出1全部放到/dev/null文件,也就是清空.
所以可以看出" >/dev/null 2>&1 "常用来避免shell命令或者程序等运行中有内容输出。


lvjiajiajia
197 声望6 粉丝

oh~


引用和评论

0 条评论