周记

周记 2017 4.10 - 4.16

2017-04-11  本文已影响23人  小程有话说

定时任务

应用每天都会产生日志,需要定期清理,如何把这个过程自动化呢。

找到需要删除的日志文件 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

参考1
参考2

定时执行 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

这是一款很棒的做笔记软件,类似有道笔记,特别适合保存代码。
特点:

  1. 支持直接拷贝代码,针对不同代码Java/Python/...语法高亮。
  2. 支持Markdown语法。
  3. 支持搜索。

缺点:目前仅仅支持Mac平台。

三级目录
支持多种编程语言
上一篇下一篇

猜你喜欢

热点阅读