Linux crond定时任务

Linux的定时任务crond(crontab)服务

1. crond是什么?

Crond是Linux系统中用来定期执行命令或者指定程序任务的以中服务或软件。
一般在我们安装完Centos5/Centos6系统的时候,crond就会默认存在了。
Crond服务默认情况(每分钟),会检查系统中是否有需要执行的定时任务,如果有,就会根据事先定义好的规则来执行这个定时任务。
秒级任务:

  1. crond无能为力
  2. 解决方法:自己写守护进程shell循环

2. 在centos7中写一个简单的秒级定时任务

2.1 在centos7中新建一个文件夹test

在这里插入图片描述

2.2 在test文件夹下创建一个xxx.sh文件并将以下代码复制进去然后:wq保存
#!/bin/sh
while true
do
  echo 执行了秒级任务
  sleep 1 
done

在这里插入图片描述

2.3 使用sh miao.sh命令启动守护秒级定时任务

在这里插入图片描述
我们可以看到每一秒会执行一次

2.4 有时候我们希望可以把该定时任务放到后台执行并且将执行了秒级任务这句话写入log日志中,将miao.sh中的代码做如下修改

在这里插入图片描述

	使用命令 sh miao.sh & 在后台启动该定时任务

在这里插入图片描述

	使用命令 ps -ef|grep miao 查看一下是否启动成功

在这里插入图片描述
可以看到定时任务在后台启动成功

然后我们可以通过命令 tail -f /crond/test/miaio_log.log 来监控该文件的 变化

在这里插入图片描述

2.5 杀掉该定时任务进程
	使用命令 kill+进程号

在这里插入图片描述
在这里插入图片描述
可以看到定时任务进程已经被杀掉了

3.我们来详细学一下linux中的定时任务

3.1 Linux的定时任务分类
  • at:适合执行一次就结束的调度程序,如突发性的任务,了解即可
  • anacron:
    适合于非7*24小时开机的服务器,开机执行的,检测停机期间没有执行的任务,在开机后一次性执行一遍。
  • crond:Crond服务默认情况(每分钟),会检查系统中是否有需要执行的定时任务,如果有,就会根据事先定义好的规则来执行这个定时任务。*****
    提示: 我们说的crond是一个定时任务守护进程,而crontab是用户用来设置定时任务规则的命令
    crontab菜鸟教程
3.2 我们使用crontab -e 来编辑一下定时任务配置看看

在这里插入图片描述
问题来了,我们到底编辑的是哪个文件呢

	键入 vim /var/spool/cron/root

在这里插入图片描述
说明我们使用crontab -e 编辑定时任务的配置文件,该配置文件就是/var/spool/cron/root 文件

3.3 基本格式如下:
01 * * * * cmd
02 4 * * * cmd
22 4 * * 0 cmd
42 4 1 * * cmd

提示:
  • cmd为要执行的命令或脚本,例如/bin/sh /crond/test/miao.sh
  • 每个列之间必须要有一个空格
  • *号,表示任意时间都
  • -减号,表示分隔符,表示一个时间范围,区间段,如00 17-19 * * * cmd点,每天的17,18,19点00分执行任务
  • , 逗号(英文),表示分割时段的意思,如00 11,13,19 * * * cmd每天的11,18,19点00分执行任务
  • /n n代表数字,即“每隔n单位时间”,例如:每10分钟执行一次任务可以写成*/10 * * * * cmd
含义取值范围(整数)
第一段代表分钟00-59(00也可以是0)
第二段代表小时00-23
第三段代表日,天01-31
第四段代表月份01-12
第五段代表星期,周几0-7(0和7都代表星期日)
记忆口诀:分时日月周
3.4来看几个例子
1. 30 3,12 * * * /bin/sh /crond/test/miao.sh
每天凌晨3:30 和中午12:30执行/crond/test/miao.sh脚本
2. 30 */6 * * * /bin/sh /crond/test/miao.sh
每隔6个小时的半点时刻执行脚本
3. 30 8-18/2 * * * /bin/sh /crond/test/miao.sh
早晨8点到下午18点之间每隔2小时的半点时刻执行脚本
4. 30 8-18/2 * * * /bin/sh /crond/test/miao.sh
早晨8点到下午18点之间每隔2小时执行脚本
5. 0,30 18-23 * * * /application/apache/bin/apachectl graceful
每天18:00至23:00之间每隔30分钟重启apache。提示:最后一次执行任务是23:30分
6. * 23,00-07/1 * * * /application/apache/bin/apachectl graceful   

强调:周和日尽量不要同时用,否则可能达不到想要的结果,比如:00 12 5 * 1 xxx按照表达式的含义为:每个月周一五号12点半 xxx 这里就矛盾了,每个月的周一并不是五号

4. 写个demo

每分钟将hello world!字符串追加到/hello.log文件中
crontab -e
在这里插入图片描述
在这里插入图片描述
切记一定要存在指定目录才会生效,否则就算定时任务配置文件正确结果也出不来
如果想要关闭定时任务crontab -e 在表达式前加#变成注释或者删掉即可
在这里插入图片描述
注意:在修改了crontab -e中的配置文件后保存即可生效,不用重启crond服务
在这里插入图片描述
注意看下面这个例子:

每天早上6点打印一句话
0 6 * * * echo "Good morning." >> /tmp/test.txt //注意单纯echo,从屏幕上看不到任何输出,因为cron把任何输出都email到root的信箱了。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

盖世英雄~小龙龙

创作不易,请作者喝瓶饮料吧~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值