zoukankan      html  css  js  c++  java
  • 计划任务cron

     cron 计划任务

    作用: 计划任务主要是做一些周期性的任务,目前最主要的用途是定期备份数据

    Schedule one-time tasks with at. 一次性调度执行 at
    Schedule recurring jobs with cron. 循环调度执行 cron
    Schedule recurring system jobs.
    所有计划任务执行中的输出都会以邮件的方式发送给指定用户, 除非重定向

    一次性调度执行 at [了解]


    语法格式:
    at <TIMESPEC>
    now +5min
    teatime tomorrow (teatime is 16:00)
    noon +4 days
    5pm august 3 2018

    例1:
    [root@CentOS7 ~]# at now +1min
    at> useradd uuuu
    at> <EOT>
    job 1 at Sat Mar 21 22:34:00 2015
    [root@yang ~]# atq
    3 Thu Mar 30 09:55:00 2017 a root
    [root@CentOS7 ~]# id uuuu

    例2:
    [root@yang ~]# vim at.jobs
    useradd u99
    useradd u00
    touch /`date +%F`.txt
    [root@yang ~]# at now +1min < at.jobs

    注: sudo执行需要考虑tty问题

    循环调度执行 cron


    [root@CentOS7 ~]# systemctl status crond.service
    [root@CentOS7 ~]# ps aux |grep crond
    root 550 0.0 0.0 126300 1648 ? Ss 10:05 0:00 /usr/sbin/crond -n
    crond进程每分钟会处理一次计划任务


    =====================用户级=====================
    存储位置:
    [root@CentOS7 ~]# ls /var/spool/cron/

    管理方式:
    crontab -l List the jobs for the current user.
    crontab -r Remove all jobs for the current users.
    crontab -e Edit jobs for the current user.
    管理员可以使用 -u username, 去管理其他用户的计划任务

    禁止其他用户使用计划任务
    /etc/cron.deny:
    alice
    jack
    [alice@yang ~]$ crontab -e
    You (alice) are not allowed to use this program (crontab)
    See crontab(1) for more information

    语法格式 Job format:
    Minutes Hours Day-of-Month Month Day-of-Week Command

    # 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
    # | | | | |
    # * * * * * command

    0 2 * * * /mysql_back.sh
    0 2 14 * * /mysql_back.sh
    0 2 14 2 * /mysql_back.sh
    0 2 * * 5 /mysql_back.sh
    0 2 * 6 5 /mysql_back.sh
    0 2 2 * 5 /mysql_back.sh
    0 2 2 6 5 /mysql_back.sh

    */5 * * * * /mysql_back.sh
    0 2 1,4,6 * * /mysql_back.sh
    0 2 5-9 * * /mysql_back.sh

    * * * * * /mysql_back.sh
    0 * * * * /mysql_back.sh
    * * 2 * * /mysql_back.sh

    示例:
    00 02 * * * ls //每天2:00整
    00 02 1 * * ls //每月1号2:00整
    00 02 14 2 * ls //每年2月14号2:00整
    00 02 * * 7 ls //每周日2:00整
    00 02 * 6 5 ls //每年6月的周五2:00整
    00 02 14 * 7 ls //每月14号2:00整 或者 每周日2:00整,这两个时间都执行
    00 02 14 2 7 ls //每年2月14号2:00整 或者 每周日2:00整,这两个时间都执行

    00 02 * * * ls //每天2:00整
    * 02 * * * ls //每天2:00中的每一分钟
    * * * * * ls //每分钟执行ls
    * * 14 2 * ls //2月14号的每分钟 1440分钟

    */5 * * * * ls //每隔5分钟
    00 02 1,5,8 * * ls //每月1,5,8号的2:00整
    00 02 1-8 * * ls //每月1到8号的2:00整

    =====================系统级=====================
    临时文件的清理 /tmp /var/tmp
    系统信息的采集 sar
    日志的轮转(切割)logrotate
    通常不是由用户定义

    定义位置一:
    [root@CentOS7 ~]# vim /etc/crontab //该文件中默认没有定义任何计划任务
    * * * * * user-name command to be executed

    定义位置二:/etc/cron.d/*
    [root@CentOS7 ~]# ls /etc/cron.d
    0hourly raid-check sysstat

    [root@CentOS7 ~]# cat /etc/cron.d/0hourly //该文件中定义的计划任务每小时会执行
    01 * * * * root run-parts /etc/cron.hourly //每小时01分以root用户执行/etc/cron.hourly目录下所有脚本

    crond: 仅仅会执行每小时定义的脚本 /etc/cron.hourly


    每小时具体执行哪些脚本:
    [root@CentOS7 ~]# ls /etc/cron.hourly/
    0anacron 0yum-hourly.cron

    [root@CentOS7 ~]# cat /etc/cron.hourly/0anacron
    /usr/sbin/anacron -s

    [root@CentOS7 ~]# vim /etc/anacrontab //该文件是anacron执行调用的文件
    #period in days delay in minutes job-identifier command
    1 5 cron.daily nice run-parts /etc/cron.daily
    7 25 cron.weekly nice run-parts /etc/cron.weekly
    @monthly 45 cron.monthly nice run-parts /etc/cron.monthly

    [root@yang ~]# ls /etc/cron.daily/
    0yum-daily.cron logrotate man-db.cron mlocate
    [root@yang ~]# ls /etc/cron.weekly/
    [root@yang ~]# ls /etc/cron.monthly/

    [root@CentOS7 ~]# ls /var/spool/anacron/
    cron.daily cron.monthly cron.weekly
    [root@CentOS7 ~]# cat /var/spool/anacron/cron.monthly
    20170321

    =====================cron log=====================
    [root@CentOS7 ~]# tail /var/log/cron
    Mar 29 20:01:01 CentOS7 run-parts(/etc/cron.hourly)[22456]: finished 0anacron
    Mar 29 20:01:01 CentOS7 run-parts(/etc/cron.hourly)[22447]: starting 0yum-hourly.cron
    Mar 29 20:01:01 CentOS7 run-parts(/etc/cron.hourly)[22462]: finished 0yum-hourly.cron
    Mar 29 20:10:01 CentOS7 CROND[22563]: (root) CMD (/usr/lib64/sa/sa1 1 1)
    Mar 29 20:20:01 CentOS7 CROND[22688]: (root) CMD (/usr/lib64/sa/sa1 1 1)
    Mar 30 09:05:31 yang crond[1399]: (CRON) INFO (Syslog will be used instead of sendmail.)
    Mar 30 09:05:31 yang crond[1399]: (CRON) INFO (RANDOM_DELAY will be scaled with factor 15% if used.)
    Mar 30 09:05:31 yang crond[1399]: (CRON) INFO (running with inotify support)
    Mar 30 09:10:01 yang CROND[1924]: (root) CMD (/usr/lib64/sa/sa1 1 1)
    Mar 30 09:20:01 yang CROND[2109]: (root) CMD (/usr/lib64/sa/sa1 1 1)


  • 相关阅读:
    顶级游戏设计大师谈如何成为一名游戏设计师
    【转】内存溢出处理方法
    我的C++技巧总结
    实践C++ 代码维护的思考
    编写安全代码:数组和指针的本质以及何时不能互换
    如何检测网络端口是否被占用
    IT人员迅速提升自我效率的十大方法
    MySQL老旧版本下载地址
    struts2: config-browser-plugin 与 convention-plugin 学习
    struts2: config-browser-plugin 与 convention-plugin 学习
  • 原文地址:https://www.cnblogs.com/thelovelybugfly/p/12072343.html
Copyright © 2011-2022 走看看