Linux任务计划、周期性任务执行

时间:2024-10-22 23:04:02

Linux任务计划、周期性任务执行

周期性任务执行: cron

守护进程(crond):服务,不间断地运行于后台

# service crond {start|stop|status|restart}

cron的任务分两类:
        系统cron任务:定义在/etc/crontab文件中
        用户cron任务:定义在/var/spool/cron/USERNAME文件中;功能类似于/etc/crontab文件

每行定义一个周期性任务计划

SHELL=/bin/bash
            PATH=/sbin:/bin:/usr/sbin:/usr/bin
            MAILTO=root
            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   
               
            例如:在7点8分运行echo "how are you?"
                08 07 * * * root /bin/echo "how are you?"

结果通过邮件进行通知;

时间表示法:
            时间:
                分钟:有效取值0-59
                小时:有效取值0-23
                天:1-31
                月:1-12
                周几:0-7
                    0,7都表示周日

(1) 给出其有效取值范围内的某特定值;
                5 * * * * /bin/echo "howdy" :
                    *的取值范围为所有,即每小时的第五分钟执行命令,用户名可以省略
               
                16 8 * * * /bin/echo "howdy"
                    每天的第8小时的第16分钟执行命令
               
                16 9 * * 3 /bin/echo "howdy"
                    每周三的9点16分执行命令
                   
                12 11 20 * * /bin/echo "howdy"
                    每月的第20天的第11小时的第12分钟执行命令
                   
                03 07 01 07 * /bin/echo "howdy"
                    每年的7月1号的7点03分执行命令
                   
            (2) *:给定时间位上的有效取值范围内的所有可用值
           
            (3) -: 给定时间位连续取值区间
                6-12 * * * * /bin/echo "howdy"
                    每小时的第六分钟到12分钟,每分钟执行一次
                        即第6,7,8,9,10,11,12分钟分别执行一次
                   
            (4) ,: 给定时间位上的离散取值
                1,31 * * * * /bin/echo "howdy"
                1,31 6,18 * * * /bin/echo "howdy"
               
            (5) */#: 对应时间位每#个时间单位一次;
                1 2 */3 * * /bin/echo "howdy"
                    每三天的第2小时第1分钟执行一次命令,前边的小时和分钟必须是规定的,而不是*
               
                */3 * * * /bin/echo "howdy"
                    每三分钟执行一次