Linux系统定时执行任务

一时失言乱红尘 2023-06-10 10:24 27阅读 0赞

前言

Git代码在线,点击阅读

Linux系统定时执行任务

Linux中通过crontab命令,可以在固定的间隔时间执行指定的系统指令或者shell脚本

Crontab 的介绍

  • crontab 命令被用来提交和管理用户的需求周期性执行的任务
  • Linux会自动启动Crontab进程,Crontab会每分钟定期检查是否有要执行的任务,如果有,则自动执行

Crontab 任务分类

  • Linux系统中任务调度分为系统调度和用户调度
  • 系统调度:/etc/crontab
  • 用户调度:/var/spool/cron/crontab

格式说明

  1. Example of job definition:
  2. .---------------- minute (0 - 59)
  3. | .------------- hour (0 - 23)
  4. | | .---------- day of month (1 - 31)
  5. | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
  6. | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
  7. | | | | |
  8. * * * * * 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 运行的命令

时间格式的描述

  1. 0 */12 * * 0,6 2018-2020

























符号 描述
代表所有可能的值
, 定义枚举值(0,6 表示星期天 or 星期六)
- 定义访问(2018-2020)
/ 定义频率(/12 每个12小时)

在线工具

https://tool.lu/crontab
在这里插入图片描述

CronTab命令

  1. $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小时执行一次

安装

查看命令

  1. crond -help

如果不存在,安装

  1. yum install crontabs

定时任务 - 用户级

进入编辑

  1. crontab -e
  2. # 每分钟输入 时间到 time.log
  3. */1 * * * * echo "HelloWorld" >> /home/vagrant/time.log

等待一分钟查看

  1. cat /home/vagrant/time.log

定时任务 - 系统级

cronotab -e是针对用户来设计的,如果是系统的例行性任务,需要编辑/etc/crontab这个文件,编辑完所有用户都会受其影响

创建任务,每一分钟执行一次

  1. vi /etc/crontab
  2. SHELL=/bin/bash
  3. PATH=/sbin:/bin:/usr/sbin:/usr/bin
  4. MAILTO=root
  5. # 每分钟输入 时间到 time.log
  6. */1 * * * * root date >> /home/vagrant/time.log

加载任务,使之生效

  1. crontab /etc/crontab

查看任务

  1. crontab -l

查看任务是否成功,日志是否每分钟写入一次

  1. tail -f /home/vagrant/time.log
  2. Thu Oct 17 14:51:02 UTC 2019

常见格式

每天,每30分钟执行一次命令

  1. */30 * * * * root date >> /home/vagrant/time.log

每天凌晨三点,执行命令脚本

PS:这里由于第一个的分钟没有设置,那么就会每天凌晨3点的每分钟都执行一次命令

  1. * 3 * * * root date >> /home/vagrant/time.log

每天凌晨三点整执行一次命令脚本

  1. 0 3 * * * root date >> /home/vagrant/time.log

每天11点到13点之间,每10分钟执行一次命令脚本,这一种用法也很常用

  1. */10 11-13 * * * root date >> /home/vagrant/time.log

每小时的10-30分钟,每分钟执行一次命令脚本,共执行20次

  1. 10-30 * * * * root date >> /home/vagrant/time.log

每小时的10,30分钟,分别执行一次命令脚本,共执行2次

  1. 10,30 * * * * * root date >> /home/vagrant/time.log

常用操作

设为开机启动

  1. systemctl enable crond

启动crond服务

  1. systemctl start crond

停止crond服务

  1. systemctl stop crond

查看状态

  1. systemctl status crond

发表评论

表情:
评论列表 (有 0 条评论,27人围观)

还没有评论,来说两句吧...

相关阅读

    相关 linux 定时任务执行

    最近尝试linux上执行定时任务,本来以为设置定时任务很简单,然而,真正执行的时候处处打脸,一直找不到为什么不执行。关于设置定时任务我的另一篇博客里总结的有,这里不做赘述,下面