## 自动删除n天前日志
[TOC]
>[info] linux是一个很能自动产生文件的系统,日志、邮件、备份等。虽然现在硬盘廉价,我们可以有很多硬盘空间供这些文件浪费,让系统定时清理一些不需要的文件很有一种爽快的事情。
### 删除文件命令
`find 对应目录 -mtime +天数 -name "文件名" -exec rm -rf {} \;`
### 实例命令
`find /opt/soft/log/ -mtime +30 -name "*.log" -exec rm -rf {} \;`
### 说明
~~~
将/opt/soft/log/目录下所有30天前带".log"的文件删除。具体参数说明如下:
find:linux的查找命令,用户查找指定条件的文件;
/opt/soft/log/:想要进行清理的任意目录;
-mtime:标准语句写法;
+30:查找30天前的文件,这里用数字代表天数;
"*.log":希望查找的数据类型,"*.jpg"表示查找扩展名为jpg的所有文件,"*"表示查找所有文件,这个可以灵活运用,举一反三;
-exec:固定写法;
rm -rf:强制删除文件,包括目录;
{} \; :固定写法,一对大括号+空格+\+;
~~~
### 计划任务
若嫌每次手动执行语句太麻烦,可以将这小语句写到一个可执行shell脚本文件中,再设置cron调度执行,那就可以让系统自动去清理相关文件。
## 操作步骤
### 创建shell
`touch /opt/soft/bin/auto-del-30-days-ago-log.sh`
`chmod +x auto-del-30-days-ago-log.sh`
新建一个可执行文件`auto-del-30-days-ago-log.sh`,并分配可运行权限
### 编辑shell脚本
`vi auto-del-30-days-ago-log.sh`
编辑`auto-del-30-days-ago-log.sh`文件如下:
~~~
#!/bin/sh
find /opt/soft/log/ -mtime +30 -name "*.log" -exec rm -rf {} \;
~~~
### 计划任务
`crontab -e`
将`auto-del-30-days-ago-log.sh`执行脚本加入到系统计划任务,到点自动执行
输入:
`10 0 * * * /opt/soft/log/auto-del-7-days-ago-log.sh >/dev/null 2>&1`
这里的设置是每天凌晨0点10分执行auto-del-7-days-ago-log.sh文件进行数据清理任务了。
完成以上三步,
- Linux的安装
- Linux的软件安装管理
- Linux零碎的命令
- 了解ssh
- 系统调优及安全设置
- Linux系统中的硬链接和软连接
- Linux文件和目录的属性及权限
- 命令总结
- 文件目录管理命令
- cat
- cd
- cp
- ls
- mkdir
- mv
- rm
- touch
- vi
- 硬件检测内核shell命令
- echo
- alias
- dd
- diff
- date
- grep(重要)
- head
- rpm
- sed(重要)
- tree
- unalias
- yum
- seq
- su
- less
- more
- tail
- awk(重要)
- pwd
- history
- whoami
- find(重要)
- which
- vimdiff
- sudo
- wget
- ln
- chmod
- chown
- vim常用技巧
- scp
- 工作场景应用总结
- 自动删除n天前日志
- 删除一个目录下的所有文件但保留一个文件
- Linux软件安装
- php安装(apache版本)
- vsftpd安装
- git安装
- python安装
- LNMP安装
- LAMP安装I
- LAMP安装II
- svn安装
- svn在Linux下的命令操作
- svn钩子简介
- svn代码上传流程
- Crond介绍
- sersync应用指南
- 其他
- 小结一
- 系统调优重新整理tmp
- linux禁止root用户直接登录sshd并修改默认端口