定时任务
应用每天都会产生日志,需要定期清理,如何把这个过程自动化呢。
找到需要删除的日志文件 find命令
find [path] [expression]
path:目录地址。
expression:
-options:指定find命令常用选项。
-name:按照文件名查找。
-perm:根据文件权限查找。
-user:按照文件属性来查找文件。
-group:按照文件属主来查找文件。
-mtime:-n文件更改时间距现在n天以内,+n文件更改时间距现在n天以前。
-newer:file1!file2,查找更改时间比文件file1新但比file2旧的文件。
-type:b 块设备文件,d 目录,c 字符设备文件,p 管道文件,l 符号链接文件,f 普通文件。
-size n:查找文件长度为n块(一块-312字节)的文件,c表示文件长度以字节计算。
-print:将匹配文件输出到标准输出。
-exec:对匹配文件执行shell命令,格式(command {} \;)。
-ok:和exec作用相同,执行每个命令前,给出提示,由用户确定是否执行。
示例:
find ./ -size 0 exec rm {} \; # 删除文件大小为0的文件
find ./ -type f -mtime +5 -exec rm {} \; # 删除更改时间在5日之前的文件
find ./ -name '*.log' -mtime +5 -ok rm {} \; # 在当前目录中查找所有以.log结尾文件,更改时间在5日以上的文件,并删除它们,删除前给出提示。
find与exec一起使用,如果找到的文件过多某些系统会出现溢出错误;所以可以结合xargs使用,其每次获取一部分文件而不是全部。
find ./ size 0 | xargs rm -rf
删除较早日志脚本:
delete_log.sh
#!/bin/sh
find /opt/web/tomcat9/creditaudit -type f -name '*.log' -mtime +30 | xargs rm -rf
定时执行 crontab
查看当前用户定时任务:
cat /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=""
HOME=/
# For details see man 4 crontabs
# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed
特殊符号:
特殊符号:
*:代表所有可能的值。
,:隔开值指定一个范围,“1,2,3”。
-:表示整数范围,"1-3"。
/:表示时间间隔频率,"0-23/2"表示每2个小时执行一次;"*/10"表示每10分钟执行一次。
常用命令:
crontab -e # 编辑某个用户的crontab,默认编辑当前用户。
crontab -l # 显示用户crontab文件内容。
crontab -r # 删除某个用户的crontab文件。
crontab -i # 在删除用户crontab文件时给出确认提示。
执行:
crontab -e
add:
10 0 * * * /opt/web/delete_log.sh >/dev/null 2>&1
SnippetsLab
这是一款很棒的做笔记软件,类似有道笔记,特别适合保存代码。
特点:
- 支持直接拷贝代码,针对不同代码Java/Python/...语法高亮。
- 支持Markdown语法。
- 支持搜索。
缺点:目前仅仅支持Mac平台。
支持多种编程语言
网友评论