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

    一 crond计划任务

    1、什么是Crond

    Crond是Linux系统中⽤来定期执⾏命令或脚本的⼀种服务软件,⼀般情况下,我们安装完CentOS操作 系统之后,默认便会启动Crond任务调度服务。

    Crond服务会定期(默认每分钟检查⼀次)检查系统中是否有要执⾏的任务⼯作,如果有,便会根据其 预先设定的定时任务规则⾃动执⾏该定时任务⼯作,这个Crond定时任务服务就相当于我们平时早起使 ⽤的闹钟⼀样。

    2、crond⽇志⽂件

    /var/log/cron
    

    3、为什么要使⽤定时任务?

    定期备份数据,定期执⾏脚本程序

    4、定时任务主要分为以下两种使⽤情况。

    (1)系统级别的定时任务: 临时⽂件清理例/tmp和/var/tmp等、系统信息采集、⽇志⽂件切割

    (2)⽤户级别的定时任务: 定时向互联⽹同步时间、定时备份系统配置⽂件、定时备份数据库的数据

    ⼆ 定时任务管理

    系统级计划任务

    定义⽅式⼀:编辑⽂件/etc/crontab

    [root@localhost ~]# vim /etc/crontab
    [root@localhost ~]# cat /etc/crontab
    SHELL=/bin/bash
    PATH=/sbin:/bin:/usr/sbin:/usr/bin
    MAILTO=root
    # 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
    分钟 ⼩时 ⽇ ⽉ 周 
    

    定义⽅式⼆:把脚本放到该⽬录下

    /etc/cron.hourly/ 	# 系统定时任务每个⼩时运⾏这个⽬录⾥的内容
    /etc/cron.daily/ 	# 系统定时任务每天运⾏这个⽬录⾥的内容
    /etc/cron.weekly/	 # 系统定时任务每周运⾏这个⽬录⾥的内容
    /etc/cron.monthly/ 	# 系统定时任务每⽉运⾏这个⽬录⾥的内容
    

    ⽤户级计划任务

    [root@localhost ~]# crontab -e 	# 创建计划任务
    * * * * * /bin/ls
    [root@localhost ~]# crontab -l 	# 查看计划任务
    * * * * * /bin/ls
    [root@localhost ~]# ls /var/spool/cron/
    root
    [root@localhost ~]# cat /var/spool/cron/root # 都是写在这⾥呢
    * * * * * /bin/ls
    [root@localhost ~]# tail /var/log/cron # 查看⽇志
    [root@localhost ~]# crontab -u egon -e
    # /etc/cron.deny 是定时任务的⿊名单,使⽤root将需要拒绝的⽤户加⼊/etc/cron.deny
    注:用户级别的计划任务存放在/var/spool/cron/,不同的用户存放的计划任务是以其自己的名字命名的脚本
    [root@localhost ~]# echo "egon" >> /etc/cron.deny
    [root@localhost ~]# su - egon # 登陆该普通⽤户,⽆法编写定时任务
    上⼀次登录:四 8⽉ 13 19:44:10 CST 2020pts/1 上 [egon@localhost ~]$ crontab -e
    You (egon) are not allowed to use this program (crontab)
    See crontab(1) for more information
    

    计划任务语法格式

    crond是按照分钟进⾏计算的,不⽀持秒

    * 表示任意的(分、时、⽇、⽉、周)时间都执⾏
    - 表示⼀个时间范围段, 如5-7点
    , 表示分隔时段, 如6,0,4表示周六、⽇、四
    /1 表示每隔n单位时间, 如*/10 每10分钟
    
    了解定时任务crontab的编写规范
    00 02 * * * 	#每天的凌晨2点整执⾏
    00 02 1 * * 	#每⽉的1⽇的凌晨2点整执⾏
    00 02 14 2 * 	#每年的2⽉14⽇凌晨2点执⾏
    00 02 * * 7 	#每周天的凌晨2点整执⾏
    00 02 * 6 5	  #每年的6⽉周五凌晨2点执⾏
    00 02 14 * 7 	#每⽉14⽇或每周⽇的凌晨2点都执⾏
    00 02 14 2 7 	#每年的2⽉14⽇或每年2⽉的周天的凌晨2点执⾏
    */10 02 * * * 	#每天凌晨2点,每隔10分钟执⾏⼀次
    * * * * * 	#每分钟都执⾏
    00 00 14 2 * 	#每年2⽉14⽇的凌晨执⾏命令
    */5 * * * *	 #每隔5分钟执⾏⼀次
    00 02 * 1,5,8 *	 #每年的1⽉5⽉8⽉凌晨2点执⾏
    00 02 1-8 * * 	#每⽉1号到8号凌晨2点执⾏
    00 21 * * * 	#每天晚上21:00执⾏
    45 4 1,10,22 * * 	#每⽉1、10、22⽇的4:45执⾏
    45 4 1-10 * * 	#每⽉1到10⽇的4:45执⾏
    3,15 8-11 */2 * * 	#每隔两天的上午8点到11点的第3和第15分钟执⾏
    0 23-7/2 * * * 	#晚上11点到早上7点之间,每隔两⼩时执⾏
    15 21 * * 1-5 	#周⼀到周五每天晚上21:15执⾏
    

    总结

    • 1、查看cron服务是否起作⽤:

    如果我们要查看定时任务是否准时调⽤了可以/var/log/cron中的运⾏信息cat /var/log/cron,也可以⽤tail -f /var/spool/mail/⽤户名,来查看普通⽤户的计划任务执⾏情况

    此处需要记住两点:

    (1):cron 守护进程每分钟都检查 /etc/crontab ⽂件、etc/cron.d/ ⽬录、以及 /var/spool/cron ⽬ 录中的改变。如果发现了改变,它们就会被载⼊内存。这样,当某个 crontab ⽂件改变后就不必重 新启动守护进程了。**

    (2):crontab的⽤户⼿册中推荐每⼀个命令使⽤绝对路径,例如调⽤rm命令时写作:/bin/rm,这 是为了防⽌由于每⼀个⽤户的PATH环境变量不同⽽导致命令⽆法找到的错误。

    • 2、编写定时任务时,先在命令⾏上⾯执⾏⼀次,查看是否可以执⾏成功。

    • 3、把定时任务执⾏的结果定向到空,如果不定向到空的话,邮件服务开启时,系统会⼀直发送邮件信息,邮 件服务关闭时,系统会⼤量⽣成⼩⽂件。

    1.定时任务规则之前加注释
    2.使⽤脚本执⾏定时任务(只有⼀条简单命令的可以直接使⽤命令执⾏)
    3.运⾏脚本⼀定要⽤绝对路径执⾏,统⼀脚本位置。
    4.定时任务中date命令的百分号需转义才能使⽤。
    5.命令或脚本结果(正确及错误)定向到空(>/dev/null 2>&1)或追加到⽂件中 >>/tmp/oldboy.txt 2>&1
    6.避免不必要的程序及命令输出,如打包命令,tar -v的显示过程的选项。
    7.打包压缩使⽤相对路径(切到⽬标⽬录的上⼀级打包⽬标)
    8.定时任务脚本中的程序⽂件 ,尽量⽤绝对路径,⽤户的定时任务中的⽂件默认存放在当前⽤户的家⽬录
    9.系统与命令位置有关的环境变量问题,建议脚本中重新定义环境变量PATH。
    
  • 相关阅读:
    reids 数据库学习
    java 8 学习二(Lambda表达式)
    java 8 学习一(概述)
    update Select 从查询的结果中更新表
    从一段文字中提取出uri信息
    Hadoop3.0磁盘均衡器
    MapReduce 程序mysql JDBC驱动类找不到原因及学习hadoop写入数据到Mysql数据库的方法
    yarn计算一个节点容量及其配置项
    YARN的capacity调度器主要配置分析
    1084 Broken Keyboard (20 分)字符串
  • 原文地址:https://www.cnblogs.com/caodan01/p/14611399.html
Copyright © 2011-2022 走看看