删除shell
find /opt/soft/log/ -mtime +30 -name "*.log" -exec rm -rf {} \;
说明:
将/opt/soft/log/目录下所有30天前带”.log”的文件删除。具体参数说明如下:
find:linux的查找命令,用户查找指定条件的文件;
/opt/soft/log/:想要进行清理的任意目录;
-mtime:标准语句写法;
+30:查找30天前的文件,这里用数字代表天数;
-name: 固定写法;
“.log”:希望查找的数据类型,”.jpg”表示查找扩展名为jpg的所有文件,”*”表示查找所有文件,这个可以灵活运用,举一反三;
-exec:固定写法;
rm -rf:强制删除文件,包括目录;
{} \; :固定写法,一对大括号+空格++;
定时任务
新建文件 shell 文件auto-del-30-day-log.sh 在home/test/bin目录下
touch auto-del-30-day-log.sh
vi auto-del-30-day-log.sh
把
find /opt/soft/log/ -mtime +30 -name "*.log" -exec rm -rf {} \;
写进去
crontab -e 这个指令 i,进入shell脚本编辑状态
10 0 * * * /home/test/bin/auto-del-30-day-log.sh>/dev/null 2>&1
“/dev/null 2>&1”表示先将标准输出重定向到/dev/null,然后将标准错误重定向到标准输出,由于标准输出已经重定向到了/dev/null,因此标准错误也会重定向到/dev/null,这样日志输出问题就解决了。
10 0 * * * 表示每天0点10分执行这个删除脚本
分 小时 日 月 星期
0-59 0-23 1-31 1-12 0-6
特殊符号:* 范围的所有数字, / 每 , - 范围 , ‘,’集合
每隔30分钟,每天晚上的凌晨3点-5点:/30 3-5 * *
每30分钟执行一次任务 /30 * * *
使用crontab -l 查看当前用户下正在执行的定时任务
crontab -l
最最重要的一点,如果全部可以但是就是未见执行,要考虑当前用户是否有操作shell脚本的权限
赋权
chmod 777 auto-del-30-day-log.sh