linux下定时任务crontab

需求背景


   每天定时执行任务,任务为删除某文件下超过30天的日志文件。

CRONTAB概念/介绍


  crontab命令用于设置周期性被执行的指令。该命令从标准输入设备读取指令,并将其存放于“crontab”文件中,以供之后读取和执行。

  cron系统调度进程。 可以使用它在每天的非高峰负荷时间段运行作业,或在一周或一月中的不同时段运行。cron是系统主要的调度进程,可以在无需人工干预的情况下运行作业。crontab命令允许用户提交、编辑或删除相应的作业。每一个用户都可以有一个crontab文件来保存调度信息。系统管理员可以通过cron.deny和cron.allow 这两个文件来禁止或允许用户拥有自己的crontab文件。

crontab文件


 一般crontab文件位于/etc/目录下。

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
# run-parts
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
0 0 * * * root bash /usr/local/nginx/timetask.sh

crontab格式


1,如:#0 0 * * * root bash /usr/local/nginx/timetask.sh:表示每天执行文件timetash.sh

  第1列分钟1~59

  第2列小时1~23(0表示子夜)

  第3列日1~31

  第4列月1~12

  第5列星期0~6(0表示星期天)

  第6列要运行的命令

2,常用定时任务时间:

  每5分钟执行             */5 * * * *

  每天执行                  0 0 * * *

  每周执行                  0 0 * * 0

  每月执行                  0 0 1 * *

  每年执行                  0 * * * *

定时删除文件


timetask.sh文件如下:

#!/bin/sh

deltime = "-mtime +30"
find /opt/soft/log/ ${deltime} -name "*.log" -exec rm -rf {} \;

1、将/opt/soft/log/目录下所有30天前带".log"的文件删除。具体参数说明如下:

  find:linux的查找命令,用户查找指定条件的文件;

  /opt/soft/log/:想要进行清理的任意目录;

  -mtime:标准语句写法;

  +30:查找30天前的文件,这里用数字代表天数;

  "*.log":希望查找的数据类型,"*.jpg"表示查找扩展名为jpg的所有文件,"*"表示查找所有文件,这个可以灵活运用,举一反三;

  -exec:固定写法;

  rm -rf:强制删除文件,包括目录;

  {} \; :固定写法,一对大括号+空格+\+;

 

             

posted on 2018-07-05 22:21  以启山林  阅读(165)  评论(0编辑  收藏  举报

导航