Linux系统定时执行任务
前言
Git代码在线,点击阅读
Linux系统定时执行任务
Linux中通过crontab命令,可以在固定的间隔时间执行指定的系统指令或者shell脚本
Crontab 的介绍
- crontab 命令被用来提交和管理用户的需求周期性执行的任务
- Linux会自动启动Crontab进程,Crontab会每分钟定期检查是否有要执行的任务,如果有,则自动执行
Crontab 任务分类
- Linux系统中任务调度分为系统调度和用户调度
- 系统调度:/etc/crontab
- 用户调度:/var/spool/cron/crontab
格式说明
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 | 分钟0~59 |
2 | 小时0~23(0表示子夜) |
3 | 日1~31 |
4 | 月1~12 |
5 | 星期0~7(0和7表示星期天) |
6 | 如果是系统级任务需指定身份 |
6 or 7 | 运行的命令 |
时间格式的描述
0 */12 * * 0,6 2018-2020
符号 | 描述 |
---|---|
代表所有可能的值 | |
, | 定义枚举值(0,6 表示星期天 or 星期六) |
- | 定义访问(2018-2020) |
/ | 定义频率(/12 每个12小时) |
在线工具
https://tool.lu/crontab
CronTab命令
$crontab 参数
参数 | 说明 |
---|---|
-l | 打印用户任务列表 |
-r | 删除用户任务列表 |
-e | 编辑用户任务列表 |
表示案例
案例 | 计划周期 |
---|---|
0 1 | 每天早上1点执行 |
/5 | 每5分钟执行一次 |
0 /2 | 每两个小时执行 |
0 0 | 每天零时执行 |
0 0 1 | 每月1号零时执行 |
5,15 1-5 | 每天早上1-5点的第5分钟和第15分钟执行 |
15 1 6,0 | 每周六、周日的1点15分执行 |
/30 18-23 | 每天18-23点,每隔30分钟执行一次 |
0 /12 * 0,6 2018-2020 | 2018-2020年之间,每周六、周日每隔12小时执行一次 |
安装
查看命令
crond -help
如果不存在,安装
yum install crontabs
定时任务 - 用户级
进入编辑
crontab -e
# 每分钟输入 时间到 time.log
*/1 * * * * echo "HelloWorld" >> /home/vagrant/time.log
等待一分钟查看
cat /home/vagrant/time.log
定时任务 - 系统级
cronotab -e是针对用户来设计的,如果是系统的例行性任务,需要编辑/etc/crontab这个文件,编辑完所有用户都会受其影响
创建任务,每一分钟执行一次
vi /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
# 每分钟输入 时间到 time.log
*/1 * * * * root date >> /home/vagrant/time.log
加载任务,使之生效
crontab /etc/crontab
查看任务
crontab -l
查看任务是否成功,日志是否每分钟写入一次
tail -f /home/vagrant/time.log
Thu Oct 17 14:51:02 UTC 2019
常见格式
每天,每30分钟执行一次命令
*/30 * * * * root date >> /home/vagrant/time.log
每天凌晨三点,执行命令脚本
PS:这里由于第一个的分钟没有设置,那么就会每天凌晨3点的每分钟都执行一次命令
* 3 * * * root date >> /home/vagrant/time.log
每天凌晨三点整执行一次命令脚本
0 3 * * * root date >> /home/vagrant/time.log
每天11点到13点之间,每10分钟执行一次命令脚本,这一种用法也很常用
*/10 11-13 * * * root date >> /home/vagrant/time.log
每小时的10-30分钟,每分钟执行一次命令脚本,共执行20次
10-30 * * * * root date >> /home/vagrant/time.log
每小时的10,30分钟,分别执行一次命令脚本,共执行2次
10,30 * * * * * root date >> /home/vagrant/time.log
常用操作
设为开机启动
systemctl enable crond
启动crond服务
systemctl start crond
停止crond服务
systemctl stop crond
查看状态
systemctl status crond
还没有评论,来说两句吧...