一、查找删除
在项目目录下创建 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 命令或者程序等运行中有内容输出。