• crond计划任务


    环境说明
    1、OS
    CentOS 7.6
    2、远程管理工具
    xshell、xftp
    3、系统优化
    参考系统优化文档
     
    计划任务简介
    经验丰富的系统运维工程师可以使得Linux在无需人为介入的情况下,在指定的时间段自动启用或停止某些服务或命令,从而实现运维的自动化。
    作用:计划任务主要是做一些周期性的任务,目前最主要的用途是定期备份数据
    分类:
    l 一次性计划任务:今晚11点30分开启网站服务。
    l 长期性计划任务:每周一的凌晨2点20分把/data/wwwroot目录打包备份为backup.tar.gz。
     
    一次性计划任务只执行一次,一般用于满足临时的工作需求。我
    们可以用at命令实现这种功能,只需要写成“at 时间”的形式就
    可以。
    at的语法结构为:
    at [OPTION]... TIME
    TIME可以设定为以下的形式,非常灵活多变:
    HH:MM [YYYY-mm-dd]
    noon,midnight, teatime
    tomorrow
    now+#
    UNIT:minutes, hours, days, OR weeks
    比如:
    now +5minutes 表示任务将在5分钟后执行;
    now +1hours 表示任务将在1小时候执行;
    now + 31days 表示任务将在1个月后执行;
    now +1weeks表示任务将在1周后执行;
    12:32 表示任务将在今天的12:32分的时候执行;
     
    示例:今晚11点30分开启网站服务
    前提:系统开启atd服务。
    [root@kongd ~]# yum install at
    [root@kongd ~]# systemctl start atd.service
    [root@kongd ~]# systemctl enable atd.service
    设置:
    [root@kongd ~]# at 23:30
    at> systemctl restart httpd
    at> <EOT>
    job 1 at Mon Sep 23 23:30:00 2019
     
    一次性计划任务:Ctrl + D组合键来结束编写计划任务
    at命令接收前面echo命令的输出信息,以达到通过非交互
    式的方式创建计划一次性任务的目的
    [root@kongd ~]# echo "systemctl restart httpd" | at
    23:30
    job 2 at Mon Sep 23 23:30:00 2019
    查看:at -l
    [root@kongd ~]# at -l
    1 Mon Sep 23 23:30:00 2019 a root
    2 Mon Sep 23 23:30:00 2019 a root
    删除:atrm
    [root@kongd ~]# atrm 2
     
    如果我们希望Linux系统能够周期性地、有规律地执行某些具体的任务,那么Linux系统中默认启用的crond服务创建、编辑计划任务的命令为“crontab -e”,查看当前计划任务的命令为“crontab -l”,删除某条计划任务的命令为“crontab -r”。
    crontab命令中加上-u参数来编辑他人的计划任务
     
    cron基础
    使用crond服务设置任务的参数格式。
    参数字段说明。 
    字段           说明
    分            取值为0~59的整数
    时            取值为0~23的任意整数
    日            取值为1~31的任意整数
    月           取值为1~12的任意整数
    星期        取值为0~7的任意整数,其中0与7均为星期日
    命令        要执行的命令或程序
     
    crontab命令书写格式中符号的含义
    * 代表每
    l 逗号(,)来分别表示多个时间段,例如“8,9,12”表示8月、9月和12月
    l 减号(-)来表示一段连续的时间周期(例如字段“日”的取值为“12-15”,则表示每月的12~15日)
    l 除号(
    /)表示执行任务的间隔时间(例如“*/2”表示每隔2分钟执行一次任务)
    示例:
    25 3 * * 1,3,5                                每周1,周3,周五的3:25分
    0 1 * * 1-5                                     每周工作日(周一至周五)1:00
    */5 * * * *                                       每隔5分钟
     
    p 书写定时计划任务的注意点:
    l 每个任务添加注释,谁写的,什么时间写的,完成什么需求?
    l 执行脚本使用/bin/sh(防止脚本无执行权限),要执行的文件使用绝对路径
    l 尽量把要执行的命令放在脚本里,然后把脚本放在定时计划任务里。
    l 对于调用脚本的定时任务,可以把标准输出错误输出重定向到空。
    l 如果时上有值,分钟必须有值。
    l “日”和“星期”字段不能同时使用,否则就会发生冲突
    l 定时任务中%无法执行,需要转义\%
    示例:
    3,15 8-11 * * * myCommand
    在上午8点到11点的第3和第15分钟执行
    3,15 8-11 */2 * *
    每隔两天的上午8点到11点的第3和第15分钟执行
     
    系统级的计划任务
    这个是系统设置好了,清理系统垃圾或者是自动执行某些脚本的系统任务,一般我们做了解就行了,不要更改配置文件是/etc/crontab,比如:
    l 更新whatis数据库
    l 更新updatedb数据库
    l 日志定期轮转(切割)
    l 清理/tmp,/var/tmp
    l 收集系统的状态信息
     
    p 文件/etc/crontab:
    [root@kongd ~]# 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
     
    p 文件/etc/crontab:
    SHELL:就是运行计划任务的解释器,默认是bash
    PATH:执行命令的环境变量
    MAILTO:计划任务的出发者用户
    HOME:家目录为/
    run-parts是一个脚本,在/usr/bin/run-parts,作用是执行一个目录下的所有脚本/程序。
    run-parts /etc/cron.hourly执行目录/etc/cron.hourly/之下的所有脚本/程序.
    run-parts下面就是运行的命令
     
    用户级的计划任务
    p 使用crontab配置
    p 常用选项:-e: 编辑计划任务 edit
                         -l: 查看计划任务 display
                        -u: 指定用户 user
                         -r: 删除计划任务 remove
    示例
    1、每月1、10、22日的4:45重启network服务
    2、每周六、周日的1:10重启network服务
    3、每天18:00至23:00之间每隔30分钟重启network服务
    4、每隔两天的上午8点到11点的第3和第15分钟执行一次重启
    5、每周日凌晨2点30分,运行cp命令对/etc/fstab文件进行备
    份,存储位置为/backup/fstab-YYYY-MM-DD-hh-mm-ss;
    6、晚上11点到早上7点之间,每隔一小时重启smb
     
    计划任务扩展
    vim /etc/crontab 与crontab -e写入的定时运行的区别?。
    vim /etc/crontab:是系统级别定义的crontab,/etc/crontab的所有者和组都是root
    crontab -e :是用户自定义的crontab,是所有的用户都可以写入的 /var/spool/cron/username
     
     
  • 相关阅读:
    开通博客第一天
    Vue 打包配置productionSourceMap 的记录
    supervisorctl 的 简单记录
    mvn打包方式记录
    springboot日志配置,关于logback
    springboot集成swagger
    关于mapper文件的bean
    elasticsearch 连接、操作记录
    关于前后端分离文件上传的些许问题
    代码优化--策略模式的四种表现
  • 原文地址:https://www.cnblogs.com/linux20190409/p/15519001.html
Copyright © 2020-2023  润新知