Linux系统运维之定时任务Cron(d)的应用

一、前言介绍

1、什么是Cron?

Cron是Linux系统中以后台进程模式周期性执行命令或者程序任务的服务软件。一般情况下,安装Linux系统之后,Cron服务软件便会自启动,服务对应的进程名为Crond,Crond会定期的检查系统中是否有需要执行的任务工作命令,可以通俗的比喻为我们日常使用的闹钟

2、为何要使用Crond定时任务

Linux运维工程师的职责之一就是要维护数据的安全,工作任务之一就是不断的对数据进行备份,所以使用Crond定时任务工具可以很好的帮助运维工程师重复地、周期性地、自动备份数据。

3、定时任务

(1)用户定时任务计划
Crond服务在工作时会以分钟为单位查看/var/spool/cron路径下面系统用户名命名的定时任务文件,以确定是否需要执行任务计划。
(2)系统定时任务计划
Crond服务在工作时除了查看/var/spool/cron下的定时任务文件之外,还会查看/etc/cron.d目录以及/etc/anacrontab下的文件内容,通常是每天,每周或者每月需要的定时任务。

二、用户定时任务Cron(d)使用

1、定时任务编辑命令语法:crontab

相关参数说明如下:

参数含义示例
-llist,即查看定时任务内容crontab -l
-eedit,编辑定时任务内容crontab -e
-r删除定时任务内容crontab -r
-i删除定时任务内容,删除前提示确认crontab -ri
-u指定用户执行定时任务crontab -u any(用户名) -l

2、定时任务相关文件路径说明

文件说明
/etc/cron.deny该文件中所列的用户不允许使用crontab命令
/etc/cron.allow该文件中所列的用户允许使用crontab命令,有优先于/etc/cron.deny
/var/spool/cron/所有的用户的Cron配置默认都放在次目录下,文件名以用户名命名,以root用户为例,命令执行的目录为/var/spool/cron/root

3、命令编辑内容格式

命令语法编写中特殊字符的含义:

符号含义
*在这里表示时间都,实际就是“每”的意思
-分隔符,表示一个时间范围、时间段
逗号,表示分隔时间段
/nn表示数字,表示每隔n个时间单位的意思

命令语法格式为:* * * * cmd (字符之间必须要有空格,可以是多个)
解释:从左开始分别表示分、时,日,月,周,cmd表示要执行的命令或者脚本;与正常时间一样。分范围为0-59,时的范围为0-23,日的范围为1-31,周的范围为0-7(0和7都表示周日)。

实例说明:
实例一: */1 * * * * (任务) ----- 表示每隔一分钟执行一次任务

实例二: 30 2,9 * * * (任务) ----- 表示每天的2:30和9:30执行一次任务

实例三: 30 9 9 9 * (任务) ----- 表示每九月九日的九点半执行任务

实例四: 00 1-9* * 2 (任务) ----- 表示每周二的一点到九点执行任务

实例五: 30 5-12 /2 * * * (任务) ----- 表示每天的五点半到十二点半期间每隔2个小时执行一次任务

实例六: * 1-10** * (任务) ----- 表示每天的一点到十点期间每分钟执行一次任务(注意)

三、Cron配置实践案例

1、每分钟打印一次any”到 /sever/log/any.log当中:
步骤:
◆crontab -e :进入到编辑定时任务文件中
◆ 编辑定时任务:* * * * * echo “any”>> /sever/log/any.log

2、规范写定时任务(一般使用脚本来执行)
每分钟打包/var/ww/html目录下的文件到/data目录下面
◆先在指定目录下创建一个脚本文件bak.h(一般都是规范化,把所有的脚本都放在此目录之下)我这里是在/sever/script/目录下面
在这里插入图片描述

◆在脚本文件上编辑:
先切换到/var/www目录下面,然后打包整个html目录下面的东西(注意:一般要把命令的全路径写上去,防止执行任务时出错
在这里插入图片描述
◆执行刚刚编写的脚本,看看是否出错:/bin/sh /server/scripts/bak.h
验证是否出错就要到/data目录下面查看是否有已经打包的文件
◆执行命令crontab -e,编写定时任务执行脚本即可
在这里插入图片描述
◆最后到/data目录查看文件验证,是否是每分钟打包一次即可
在这里插入图片描述

四、定时任务要领

1、为定时任务规则加上必要的注释,一般就是,什么人,什么时候,做了什么事,以便于其他的工程师解读;
2、所有的定时任务尽量都要以脚本的形式执行,如果是直接用命令行执行的话,比较乱而且容易出错;
3、在执行的shell脚本上加上/bin/sh,以确保cron执行者有访问shell脚本所在目录的权限,且可执行;
4、定时任务在命令或者脚本的结尾加上">/dev/null 2>&1"(或者是&>/dev/null),将前面脚本的正常和错误输出都定向到/dev/null中,也就是什么都不输出;
5、在指定用户下执行相关的定时任务,根据用户的需要,不同用户有不同的需要,便会有定时任务;
6、在任务当中不要随意的打印输出的信息,避免随意定向输出不做重定向,从而导致垃圾的产生;
7、定时任务执行的脚本要放到规范的路径下面,实现规范化;
8、配置定时任务是要规范操作过程,减少出错,尽量先要在命令行执行成功,然后执行脚本测试成功,然后在定时任务中部署;
9、定时任务脚本中程序命令及路径尽量使用全路径,防止执行任务是出错;
10、切记:对于时间变量%号,使用时要用转义字符(反斜线)进行转义,不认执行时会出错;
11、若脚本中使用了系统的环境变量,则要重新定义。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值