配置crond定时任务

article/2025/10/16 3:49:08

文章目录

    • 一. crond计划任务概述
    • 二. crond配置文件详解
    • 三. crond计划任务管理
    • 四. crond配置编写实例
    • 五. crond计划任务调试

一. crond计划任务概述

  • 什么是计划任务,计划任务类似于我们平时生活中的闹钟。

  • 在Linux系统的计划任务服务crond可以满足周期性执行任务的需求。

  • crond进程每分钟会处理一次计划任务, 计划任务主要是做一些周期性的任务目前最主要的用途是定时备份数据

    • Schedule one-time tasks with at. 一次性调度执行 at
    • Schedule recurring jobs with cron. 循环调度执行 cron
    • Schedule recurring system jobs. 所有计划任务执行中的输出都会以邮件的方式发送给指定用户, 除非重定向
  • //循环调度执行cron 进程每分钟会处理一次计划任务(考试时一定要查看一下,小心给你关掉了。)
    [root@wangqing ~]# systemctl status crond
    在这里插入图片描述

    • [root@wangqing ~]# ps aux |grep crond
      root 1201 0.0 0.0 126264 1640 ? Ss 11:15 0:00 /usr/sbin/crond -n
  • 计划任务分为以下两种情况:

    • 系统级别的定时任务:

      • 清理系统缓存
      • 临时文件清理
      • 系统信息采集
      • 日志文件切割
    • 用户级别的定时任务:

      • 定时同步互联网时间

        获取ntpdate的源码包,直接在centOS上安装。
        http://mirror.centos.org/centos/7/updates/x86_64/Packages/ntpdate-4.2.6p5-29.el7.centos.2.x86_64.rpm
        然后通过ntpdate命令进行时钟同步。

        在这里插入图片描述

      • 定时备份系统配置文件

      • 定时备份数据库文件


二. crond配置文件详解

文件说明
/etc/crontab//crontab配置文件
/etc/cron.deny//该文件中所列用户不允许使用crontab命令,如果需要添加白名单就创建/etc/cron.allow。
/var/spool/cron/*//所有用户定时文件都存放此目录,文件以用户名命名
/var/log/cron//定时任务执行后的日志文件,可用来回溯
  • 先拒绝后允许,除了拒绝的人之外其他人都可以用计划任务,这就是黑名单。
  • 先允许后拒绝,除了允许的人之外其他人都不能使用计划任务,这就是白名单。
  • 白名单和黑名单不能同时使用。root默认都可以查看,无法限制查看计划任务。

三. crond计划任务管理

  • crond任务管理
    命令帮助语法:[root@wangqing ~]# crontab --help
参数含义指定示例
-e编辑crontab文件内容crontab -e
-l查看crontab文件内容crontab -l
-r删除crontab文件内容crontab -r (会清空所有的,切记不要删除。可以通过vim界面调整)
-u管理其他用户的计划任务crontab -u wangqing -l
  • 注意: crontab {-l -e}实际上就是在操作/var/spool/cron/username

  • //如何进行计划任务的备份?

    • crond时间含义

      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 to be executed

    • // * 表示任意的(分、时、日、月、周)时间都执行

    • // - 表示一个时间范围段, 如5-7点

    • // , 表示分隔时段, 如6,0,4表示周六、日、四

    • // /n 表示每隔n单位时间, 如/10 每10分钟

    • crond编写示例

      00 02 * * * command 每天的凌晨两点执行
      00 02 1 * * command 每月1号凌晨两点执行
      00 02 14 2 * command 每年的2月14号凌晨两点执行
      00 02 * * 7 command 每个星期天的凌晨两点执行
      00 02 * 6 5 command 矛盾错误的写法。
      00 02 14 * 7 command每个月的14号且是星期天的两点执行(不推荐)
      00 02 14 2 7 command 每年的2月14号且是周天的两点执行
      * 02 * * * command 错误的写法,没有指定分钟
      * * * * * * command
      * * * 14 2 * command
      */5 * * * * command 每隔五分钟执行一次命令 */表示每隔多少时间
      */5 */2 */3 5 * command 每年五月的每隔三天的每隔两小时每隔五分钟执行一次。
      30 5 3 * * command 每个月的三号凌晨5点三十分执行。

  • crond书写规范

    • //1.为计划任务增加必要的注释
      [root@wangqing ~]# crontab -l
      ##time sync
      */5 * * * * /usr/sbin/ntpdate time1.aliyun.com &>/dev/null

    • //2.规范计划任务执行脚本存放的路径/scripts/ (统一标准放到脚本目录下,在脚本前面需要添加一个/bin/bash )然后将计划任务的脚本执行结果重定向到一个文件目录里去。
      [root@wangqing ~]# crontab -l
      ##backup www to /backup
      30 01 * * * /bin/sh /scripts/www_backup.sh &>/dev/null(输出目录文件)

    • //3.执行shell脚本任务前加/bin/sh, 脚本结尾加&>/dev/null
      //调试好后应屏蔽debug输出信息,避免产生系统垃圾占用过多inode, 如需输出日志, 可重定向至日志文件
      [root@wangqing ~]# crontab -l
      ####backup www to /backup
      30 01 * * * /bin/sh /scripts/www_backup.sh &>/tmp/www_backup.log


四. crond配置编写实例

  • [root@wangqing ~]# crontab -e

    • #每天凌晨切割nginx日志
      05 00 * * * /bin/bash -x /scripts/cut_nginx.sh &> /scripts/log/nginx.log
    • #每天5点备份数据库
      00 05 * * * /bin/bash -x /scripts/dump_sql.sh &>/scripts/log/mysql.log(当测试计划任务正常执行,则可以删除日志文件的编写。)
  • //注意:

    • .我们所有的crond服务是运行的程序。而crontab命令用户用来设置定时规则的命令。
    • 2.crond服务是企业生产工作中常用的重要服务,at很少使用,可以忽略。
    • 3.几乎每个服务器都会用到crond服务。

五. crond计划任务调试

  • 调试的环境分为以下几种:
测试环境测试人员使用装机+业务环境 发布版本
开发环境开发人员使用装机+业务环境
准生成(预部署)环境运维维护使用
生产环境运维维护使用客户使用的环境 让公司盈利的环境
  • 1,调整任务每分钟执行, 检测是否是否正常, 有些任务不要频繁执行

  • 2,调整系统时间然后在检测任务, 生产不建议直接使用此方式(业务运行的环境中不建议更改系统时间)

  • 3执行脚本, 将脚本执行输出写入指定日志文件, 观察日志内容是否正常

  • 4注意一些任务命令带来的问题echo “wangqing” >>/tmp/test.log &>/dev/null 输出文件位置以最后一个路径为准,最终内容将输入对应的文件中。

  • 5命令使用绝对路径, 防止无法找到命令导致定时任务执行故障

  • 6 查看/var/log/cron日志进行调试

    • 建议: 将需要定期执行的任务写入脚本中, 建立/scripts目录统一存放脚本, 脚本中命令必须使用绝对路径,手动执行脚本检测输出是否正常, 然后将脚本加入计划任务测试, 测试后无问题将脚本输出写入对应的日志文件中即可。
  • 计划任务添加步骤:

    • 1,手动执行保留执行命令的正确结果(添加前一定要测试脚本的正确性。)
    • 2,编写脚本
      • 脚本需要统一路径/scripts
      • 脚本开头建议填写注释信息, 包括执行时间、周期、任务
      • 脚本内容复制执行成功的命令至脚本文件中(减少每个环节出错几率)
      • 脚本内容尽可能的优化, 使用一些变量或使用简单的判断语句
      • 脚本执行的输出信息不要随意打印, 可以重定向至其他位置保留或丢入黑洞
    • 3,执行脚本
      • 使用bash执行, 防止脚本没有增加执行权限(/bin/bash)
      • 执行命令以及脚本成功后并复制该命令
    • 4,编写计划任务
      • 加上必要的注释信息, 人、时间、任务
      • 设定计划任务执行的周期
      • 加入执行脚本的命令
    • 5,调试计划任务
      • 增加任务频率测试、调整系统时间测试(不能用于生产)
      • 检查环境变量问题、检查crond服务产生日志进行排查

案例:
在linux系统中备份脚本backup.sh需要再每周1-5的每天下午1点和晚上8点执行,下列哪个cron命令可以完成(D)
a. 00 13,20 * 1-5 * backup.sh
b. 0 13,20 1,5 * * backup.sh
c. * 13,20 * * 1-5 backup.sh
d. 00 13,20 * * 1-5 backup.sh
说明以上答案每一行是什么含义
每年的一到五月的每天的13点和20点执行backup.sh脚本文件
每月的1号和五号的13点和20点执行backup.sh脚本文件
错误,没有指出时间。
每周一到周五的13点到20点的执行backup.sh 故选D。

2.新建/scripts/httpd.sh文件,并让/scripts/httpd.sh脚本在每天的00:10分执行
10 00 * * * /bin/bash : /scripts/httpd.sh
3.新建/backup目录,每周一下午5:50将/backup目录下的所有文件打包成 backup.tar.gz
4.写一个定时任务,每天0点5分把/var/log/nginx下7天前的文件转移到/backup/2018_xx_xx的目录中
5.系统脚本/scripts/which.sh,如何定时每隔7分钟执行一次?
6.如何不小心删除了/var/spool/cron/root文件,该如何恢复。


http://chatgpt.dhexx.cn/article/EDQ6XSit.shtml

相关文章

Linux的crond的配置流程,Linux之定时任务Crond详解

定时任务Crond介绍 Crond是linux系统中用来定期执行命令/脚本或指定程序任务的一种服务或软件,一般情况下,我们安装完Centos5/6 linux操作系统之后,默认便会启动Crond任务调度服务。 Crond服务会定期(默认每分钟检查一次)检查系统…

linux 之 crond定时任务

一、crond简介 crond 是linux下用 提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 目录 文章目录 前言 一、系统任务调度 二、crond服务 1.安装crontab: 常用命令: 2.操作设置 新增调度…

crond服务总结

昨天翻阅程序发现服务器端管理程序的启动方式很特别,在之前是由init进程启动程序脚本里的进程,昨天发现服务程序并没有在任何脚本中有启动的体现,但是服务程序确实是启动了,经过一番查找发现原来是crond定时启动被触发然后启动了服…

crond

Linux中的crond:设置周期性被执行的指令 crond与crontab密不可分,简言之,crond是crontab的一个守护进程。 crontab是一个命令,它从标准输入设备读取指令,存放于“contab文件”中,供以后读取和执行。 crond时…

linux 很多CROND进程,linux添加定时任务crond

1.crontab –e:编辑当前定时任务 保存完重新crond : service crond restart 2. crontab用法 crontab –e : 修改 crontab 文件,如果文件不存在会自动创建。 crontab –l : 显示 crontab 文件。 crontab -r : 删除 crontab 文件。 crontab -ir : 删除 crontab 文件前…

crond使用指南

crontab 为定时执行脚本命令,我学习这个的目的是为了定时执行校园网登录脚本,以防止服务器内网穿透掉线。 1. 编写联网脚本 2. 赋予脚本执行权限 3. 安装crond yum install crontabs -y systemctl enable crond #设为开机启动 systemctl start crond…

linux下crond服务,Linux之定时任务Crond详解

定时任务Crond介绍 Crond是linux系统中用来定期执行命令/脚本或指定程序任务的一种服务或软件,一般情况下,我们安装完Centos5/6 linux操作系统之后,默认便会启动Crond任务调度服务。 Crond服务会定期(默认每分钟检查一次)检查系统…

Linux crond命令使用介绍

目录 前言一、crond简介系统任务调度用户任务调度 二、crond服务三、crontab命令详解1.命令格式2.命令功能3.命令参数4.常用方法1). 创建一个新的crontab文件2). 列出crontab文件3). 编辑crontab文件4). 删除crontab文件5). 恢复丢…

linux 查看crond服务器,CentOS安装crond服务

初学Linux, 太多太多的问题,让我不得不有头疼的时候,比如学到Cron建立计划任务时,却发现我的虚拟机没有安装cron本身, 为了安装这个,我也花了不少周折,现总结如下: 1.先检查Linux是否已经安装cr…

定时任务crond

一、定时任务(crond) 1.什么crond:crond就是计划任务,类似于我们平时生活中的闹钟,定点执行 。2.为什么要用crond:计划任务主要是做一些周期性的任务,比如: 凌晨3点定时备份数据。或11点开启网站抢购接口,1…

linux crond定时任务,Linux之定时任务Crond使用

Linux之定时任务Crond使用 一、用法 crond服务是linux系统自带的服务,是不需要手动安装的; crond服务是一种守护进程; Linux中的用户使用contab命令来配置corn任务; crontab –e : 修改 crontab 文件,如果文件不存在会自动创建; crontab –l : 显示 crontab 文件; cront…

Linux的基本操作——crond定时任务

一、crond简介 1、基本介绍 crond是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务工具,并且会自动启动crond进程,crond进程每…

数组之二维数组

目录 一、二维数组的定义与引用 1、二维数组的定义 2、二维数组的引用 二、二维数组的赋值 1、二维数组的初始化 三、二维数组的应用举例 一、二维数组的定义与引用 1、二维数组的定义 一般格式: 类型说明符 数组名 [常量表达式1] [常量表达式2]; 其中…

JavaScript一维数组转二维数组

[1, 2, 3, 4, 5, 6, 7, 8] 实现效果 [[1, 2, 3, 4], [5, 6, 7, 8]] 1. slice截取 function fn(arr, num) {let newArr []const total Math.ceil(arr.length / num)console.log(total);for (let i 0; i < total; i) {a arr.slice(i * num, (i 1) * num)newArr…

js一维数组转二维数组(生成二维数组)

昨天遇到了一个需要对后端传来的一段数据做操作&#xff0c;是将一维数组转为二维数组&#xff0c;思考了半天&#xff0c;夜晚又和朋友讨论了一下&#xff0c;思路如下。&#xff08;毕竟我只是个切图仔&#xff09; let classRes [{className: 05,name: a1,age: 12,sex: 1},…

JS二维数组赋值问题

背景 定义二维数组并赋值 let list new Array(5).fill(new Array(3).fill(0))此时在给二维数组赋值时使用如下代码&#xff1a; list[2][1] 2看下赋值结束后的打印结果&#xff1a; 未达到预期。 ES6解析 我们看下阮一峰在es6中对fill的定义&#xff1a; 理解 这样就…

JavaScript 二维数组转一维数组

目录 1. flat() 2. reduceconcat 3. [ ].concat 4. concat.apply 5. toString split &#xff08;字符串或数值&#xff09; 6. 遍历判断 7.多维数组转一维数组 1. flat() 语法&#xff1a;var newArray arr.flat([depth]) depth(深度)&#xff1a;指定要提取嵌套数…

JavaScript生成二维数组

方法一&#xff1a; new Array(x).fill(new Array(y).fill(0)) 但注意&#xff0c;当一个对象被传递给fill方法时&#xff0c;填充数组的是这个对象的引用。即二维数组的第一个维度中的每一个数组都指向同一个引用&#xff0c;如果向第一个维度中的任一元素执行push&#xff0c…

js一维数组转二维数组

使用场景举例&#xff1a;接口返回一个数组对象&#xff0c;展示时每行固定显示n个&#xff0c;则可将返回的数组转成二维数组[[...n], [...n]...]的形式循环展示。 a.数组元素为基本类型&#xff1a; let baseArray [1, 2, 3, 4, 5, 6, 7, 8];len len baseArray.length;let …

js二维数组变为一维数组

1、用es5的reduce和concat组合 let list[[1,2,3],[4,5,6],[7,8],[9]]let listslist.reduce((a,b)>a.concat(b))console.log(lists)reduce的用法 数组方法reduce用来迭代一个数组&#xff0c;并且把他累积到一个值中。 使用 reduce 方法时&#xff0c;你要传入一个回调函数…