linux使用find和crontab命令定期清理过期文件
2017-11-08 10:52
501 查看
crontab 命令
crontab 命令是 Linux 中用来设定重复执行命令或脚本的工具。它能够在指定的时间段内,按照需求以某一时间间隔执行命令或脚本。
crontab 的基本用法
用来指定用户的
crontab 文件的格式
不管是用
crontab 的命令格式如下:
从上图我们可以看出:
一条 crontab 命令分成六列,写在一行内;
前 5 列用于定时,指明什么时候开始执行;
第 6 列用于指定需要定时执行的命令或脚本;
此外,和 Shell 脚本一样,在 crontab 文件中,我们也可以用 # 来表示注释。
花式定时
在 crontab 命令中用于定时的前 5 列中,支持以下符号,用于「花式定时」:
星花(*):代表所有可能的值;
逗号(,):用逗号隔开同一字段的不同范围;
连字符(-):用连字符连接两个整数,表示整数范围;
斜线(/):实际上是除法斜线,用来指定时间间隔频率。
一些例子
有了这些知识,我们就可以看一些实例了。
find —— 找些乐子
man find 给出的 find 命令的一般形式是:
其中
expression: 具体形式是
常用的参数
find . -name "*.cpp": 在当前目录 (.) 及子目录下递归地查找所有后缀为 .cpp 的文件,并打印在标准输出中
find . -perm 755: 在当前目录 (.) 及子目录下递归地查找所有权限为 755 的文件(目录),并打印在标准输出中
find . -perm 644 -name "*.cpp": 在当前目录及子目录下 (.) 递归地查找所有权限为 644 的 .cpp 文件,并打印在标准输出中
find . -user search: 在当前目录 (.) 及子目录下递归地查找所有 search 账号所属的文件,并打印在标准输出中
find . -atime +7: 在当前目录 (.) 及子目录下递归地查找所有上次访问在 7 天以前的文件,并打印在标准输出中
find . -mmin -10: 在当前目录 (.) 及子目录下递归地查找所有上次修改在 10 分钟以内的文件,并打印在标准输出中
b: 块设备文件
d: 目录
c: 字符设备文件
p: 管道文件
l: 符号链接文件
f: 普通文件
定期清理
至此,定期清理无用的文件就变得很简单了。我们只需要在 crontab 里结合 find 命令的
这里,我们在每天早上 8 点整执行 find 命令;该命令会在 /home/s/coredump 目录下寻找 search 用户创建的普通 7 天前的文件,然后删除掉。
crontab 命令是 Linux 中用来设定重复执行命令或脚本的工具。它能够在指定的时间段内,按照需求以某一时间间隔执行命令或脚本。
crontab 的基本用法
crontab [-u <user>] [-e|-l|-r] crontab <filename>
crontab <filename>可以读入一个以 crontab 语法书写的文件,并依照文件内的指示执行定时任务。与此同时,
crontab -l能够在标准输出上列出当前用户所有的定时任务情况。因此,我们可以用
crontab -l > <filename>来保存当前 crontab 的状况,在有需要的时候(比如误删除)用
crontab <filename>读入恢复。
crontab -e则会启动系统默认的编辑器。这个编辑器由系统环境变量 EDITOR 指定;例如
export EDITOR=vi,则
crontab -e会启动 vi 来编辑当前用户的 crontab 定时任务文件。
crontab -r则会删除用户的所有 crontab 定时任务。
用来指定用户的
-u <user>选项则会改变
-e/-l/-r等选项的行为。如果不通过
-u指定用户,则默认的操作都是针对当前用户的;反之,则针对指定的用户。例如
crontab -u Liam -r则会删除用户 Liam 的 crontab 定时任务——当然,你需要有足够的权限这么做。
crontab 文件的格式
不管是用
crontab <filename> 从文件读入定时任务,还是用
crontab -e编辑定时任务,我们都会接触到 crontab 格式的命令。
crontab 的命令格式如下:
从上图我们可以看出:
一条 crontab 命令分成六列,写在一行内;
前 5 列用于定时,指明什么时候开始执行;
第 6 列用于指定需要定时执行的命令或脚本;
此外,和 Shell 脚本一样,在 crontab 文件中,我们也可以用 # 来表示注释。
花式定时
在 crontab 命令中用于定时的前 5 列中,支持以下符号,用于「花式定时」:
星花(*):代表所有可能的值;
逗号(,):用逗号隔开同一字段的不同范围;
连字符(-):用连字符连接两个整数,表示整数范围;
斜线(/):实际上是除法斜线,用来指定时间间隔频率。
一些例子
有了这些知识,我们就可以看一些实例了。
# 每分钟执行一次 * * * * * command # 每 5 分钟执行一次 */5 * * * * command # 每个小时的 15 分和 45 分执行一次 15,45 * * * * command # 晚上 20:00 -- 20:15 每分钟执行一次 0-15 20 * * * command # 每周一上午 10 点执行一次 0 10 * * 1 command
find —— 找些乐子
man find 给出的 find 命令的一般形式是:
find [-H] [-L] [-P] [-D debugopts] [-Olevel]path ... [expression]
其中
[-H] [-L] [-P] [-D debugopts] [-Olevel]很少会用到。因此,find 命令的一般形式可以简化为 f
ind path ... [expression];亦即,在一些路径(默认递归地包含子路径)中找到合适的文件,然后根据 expression 执行相应动作。
path ...: find命令查找的路径
expression: 具体形式是
-parameters [-exec -ok]
-parameters有很多,待下一节具体介绍常用的参数
-exec command {}\; 执行一条 Shell 命令
-ok command {} \; 同 -exec 的作用,不过在执行每条命令前,都会提示用户确认
常用的参数
-name: 按照文件名查找文件,接受通配符
find . -name "*.cpp": 在当前目录 (.) 及子目录下递归地查找所有后缀为 .cpp 的文件,并打印在标准输出中
-perm: 按照文件权限查找文件
find . -perm 755: 在当前目录 (.) 及子目录下递归地查找所有权限为 755 的文件(目录),并打印在标准输出中
find . -perm 644 -name "*.cpp": 在当前目录及子目录下 (.) 递归地查找所有权限为 644 的 .cpp 文件,并打印在标准输出中
-group: 按照文件的所属组查找
-user: 按照文件的所有者查找
find . -user search: 在当前目录 (.) 及子目录下递归地查找所有 search 账号所属的文件,并打印在标准输出中
-atime, -mtime, -amin, -mmin: a 开头的表示「按照上次访问时间查找」,m 开头的表示「按照上次修改时间查找」;-n 表示 n 时间内,+n 表示 n 时间以前
find . -atime +7: 在当前目录 (.) 及子目录下递归地查找所有上次访问在 7 天以前的文件,并打印在标准输出中
find . -mmin -10: 在当前目录 (.) 及子目录下递归地查找所有上次修改在 10 分钟以内的文件,并打印在标准输出中
-newer file1 ! file2: 查找比 file1 新但是比 file2 旧的文件
-type [b|d|c|p|l|f]: 按照文件类型查找
b: 块设备文件
d: 目录
c: 字符设备文件
p: 管道文件
l: 符号链接文件
f: 普通文件
-follow: 如果 find 命令遇到符号链接文件,就跟踪至链接所指向的文件
-delete: 删除查找到的文件或目录
定期清理
至此,定期清理无用的文件就变得很简单了。我们只需要在 crontab 里结合 find 命令的
-delete选项即可。
0 8 * * *
find
/home/s/coredump
-user search -
type
f -mtime +7 -delete
这里,我们在每天早上 8 点整执行 find 命令;该命令会在 /home/s/coredump 目录下寻找 search 用户创建的普通 7 天前的文件,然后删除掉。
相关文章推荐
- linux使用find和crontab命令定期清理过期文件
- 利用 find 和 crontab 命令清理过期文件
- 利用 find 和 crontab 命令清理过期文件
- Linux-使用 Find 命令找到那些需要清理的文件
- Linux内、外部命令的使用、文件权限、文件查找(find、locate、grep)
- linux系统中find命令使用示例(linux查找文件)
- linux 操作系统中find文件搜索命令的使用
- Linux文件查找Find命令使用解析
- Linux命令 find和mv的结合使用:查找文件,移动到某个目录
- Linux基础教程 linux下使用find命令根据系统时间查找文件用法
- 使用批处理命令定期清理删除指定后缀文件,释放空间
- 使用 Find 命令来帮你找到那些需要清理的文件
- linux下查找文件命令find使用方法
- Linux系统文件查找命令find的基本使用及其高级用法
- Linux下find(文件查找)命令使用实例总结
- linux利用find + crontab定时删除文件(过期、超时)
- 使用 Find 命令来帮你找到那些需要清理的文件
- Linux文件查找find命令使用方法
- linux查找文件命令find 之使用