linux建立定时任务

一、简介

定时任务与shell脚本的搭配可以实现很多令人轻松的功能。让机器按照人的意志定时去做事,绝对是让人愉悦的事情!

先说crond。crond 是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程,与windows下的计划任务类似。

Linux下的任务调度分为两类,即系统任务调度和用户任务调度。
(1)系统任务调度
系统任务调度,是面向全局的功能。不受用户限制,持续执行定时任务。
因为是面向全局,不要考虑限制,所以构造更加简单。
系统任务调度的文件是存在于/etc目录下crontab文件中,因此只要直接在该文件中增加工作任务即可。

(2)用户任务调度
用户任务调度,仅仅是面向用户的功能。由一般用户设置定时任务,相较于系统任务则是存在较多不同。不仅是增加了权限限制,而且crontab存放的位置也不同。具体如下:

使用者权限文件
在目录etc下有两个文件
cron.deny # 该文件中所列用户不允许使用crontab命令
cron.allow # 该文件中所列用户允许使用crontab命令

用户crontab文件的存放目录
/var/spool/cron/ # 所有用户crontab文件存放的目录,文件名与用户名一致。

二、crond服务

一般情况下安装完成操作系统,会默认会安装此服务工具,并且会自动启动crond进程,crond进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务。

查看状态

service crond status

启动crond

service crond start

关闭crond

service crond stop

三、crond格式

系统调度的任务一般存放在/etc/crontab这个文件下,里面存放了一些系统运行的调度程序。
使用命令:

cat /etc/crontab
SHELL=/bin/bash # 第一行SHELL变量指定了系统要使用哪个shell,这里是bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin # 第二行PATH变量指定了系统执行 命令的路径
MAILTO=root # 第三行MAILTO变量指定了crond的任务执行信息将通过电子邮件发送给root用户,,如果MAILTO变量的值为空,则表示不发送任务 执行信息给用户

# 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

四、设置

1、查看定时任务

crontab -l

2、编辑定时任务

crontab -e

3、删除定时任务

crontab -r

4、实操说明

* * * * * command

等价

minute hour day month week command

minute: 表示分钟,可以是从0到59之间的任何整数。

hour:表示小时,可以是从0到23之间的任何整数。

day:表示日期,可以是从1到31之间的任何整数。

month:表示月份,可以是从1到12之间的任何整数。

week:表示星期几,可以是从0到7之间的任何整数,这里的0或7代表星期日。

实用案例

案例1:每1分钟执行一次command

* * * * * command

案例2:每小时的第15和第30分钟执行一次command(,表示时间点)

15,30 * * * * command

案例3:在上午8点到11点的第15分钟执行(- 表示时间范围)

15 8-11 * * * command

案例4:每隔两天的上午8点到11点的第3和第15分钟执行(/ 表示时间间隔)

3,15 8-11 */2  *  * command

案例5:每周一上午8点到11点的第3和第15分钟执行

3,15 8-11 * * 1 command

案例6:每晚的21:30执行home目录下的test.sh脚本

30 21 * * * /bin/sh /home/test.sh

案例7:每月1、10、22日的4 : 45执行home目录下的test.sh脚本

45 4 1,10,22 * * /bin/sh /home/test.sh

案例8:每周六、周日的1 : 10执行home目录下的test.sh脚本

10 1 * * 6,0 /bin/sh /home/test.sh

案例9:每天18 : 00至23 : 00之间每隔30分钟执行home目录下的test.sh脚本

0,30 18-23 * * * /bin/sh /home/test.sh

案例10:每星期六的晚上11 : 00 pm执行home目录下的test.sh脚本

0 23 * * 6 /bin/sh /home/test.sh

案例11:每一小时执行home目录下的test.sh脚本

* */1 * * * /bin/sh /home/test.sh

案例12:晚上11点到早上7点之间,每隔一小时执行home目录下的test.sh脚本

* 23-7/1 * * * /bin/sh /home/test.sh

五、知识拓展

执行脚本的时候,一般会有几种不同的方式简单列举一下

source test.sh
./test.sh
sh test.sh
bash test.sh

有机会专门总结一下关于shell脚本的编写和执行,这里就不继续发挥了。这里重点说一下sh和bash
sh和bash都是shell的解释器,在linux环境中/bin 目录下存在相应的应用程序。
sh是通过软链接指向bash的。
通过命令:

ll -r

可以看到:

sh -> bash

结论就是sh 和bash 执行脚本完全等价。

sh test.sh

等价

bash test.sh
  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值