linux-crontab每分钟定时执行/定时任务调度

news2024/9/28 21:59:04

文章目录

  • 一、前言
  • 二、crontab概述
    • 2.1、crontab命令简介
    • 2.2、linux定时任务分类
  • 三、安装crontab
  • 四、crontab使用
    • 4.1、crontab语法
    • 4.2、定时任务设置
    • 4.3、定时任务格式
    • 4.4 crontab表达式在线验证
  • 五、实例
  • 六、定时任务的日志

一、前言

本文讲解linux上如何调用定时任务,如每分钟打印日志,每日24点执行日志切割脚本等等。

二、crontab概述

2.1、crontab命令简介

在Linux系统中,crontab命令是一个用于执行定时任务的命令,crond(crontab)是系统默认自带的定时服务。我们可以通过编辑crontab文件来设置定时任务,使系统可以自动按照设定的时间和频率执行命令。crontab文件通常保存在/etc/crontab和/var/spool/cron目录下。
在这里插入图片描述

总结: 只有安装了crond服务以后crontab命令才能使用,crontab命令按照指定的格式编辑定时任务保存在crontab文件中,crond服务会每分钟定期查看crontab文件中的定时任务列表去执行任务。

2.2、linux定时任务分类

Linux 系统下的任务调度分为两类:系统任务调度用户任务调度

系统任务调度:系统周期性所要执行的工作,比如写缓存数据到硬盘、日志清理等。在/etc目录下有一个crontab文件,这个就是系统任务调度的配置文件。

/etc/crontab文件包括下面几行:

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root

# 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

用户任务调度:用户自定义的定期要执行的工作,用户可以使用 crontab 工具来定制自己的计划任务,所有用户自定义的crontab 文件都被保存在 /var/spool/cron目录中。其文件名与用户名一致,例如我用root用户设置了一个定时任务,那么其对应的crontab文件就是 /var/spool/cron/root。

crontab命令允许用户提交、编辑或删除相应的作业。每一个用户都可以有一个crontab文件来保存调度信息。系统管理员可以通过cron.deny 和 cron.allow 这两个文件来禁止或允许。

/etc/cron.deny     该文件中所列用户不允许使用crontab命令
/etc/cron.allow    该文件中所列用户允许使用crontab命令
/var/spool/cron/   所有用户crontab文件存放的目录,以用户名命名

总结:系统级别的定时任务crontab文件是/etc/crontab,用户自定义的定时任务其crontab文件保存在 /var/spool/cron/ 目录下,名字和用户名一致。

三、安装crontab

1.检测系统是否安装crond服务

service crond status

在这里插入图片描述

2.安装

yum -y install vixie-cron
yum -y install crontabs

注意:
vixie-cron 软件包是 cron 的主程序;
crontabs 软件包是用来安装、卸装、或列举用来驱动 cron 守护进程的表格的程序。

3.启动服务
cron是linux的内置服务,但它不自动起来,可以用以下的方法启动、关闭这个服务:

service crond start     //启动服务
service crond stop      //关闭服务
service crond restart   //重启服务
service crond reload    //重新载入配置
service crond status    //查看crontab服务状态

4.设置开机自动启动

ntsysv #查看crontab服务是否已设置为开机启动
chkconfig –level 35 crond on #加入开机自动启动
chkconfig –list crond //开机级别的crond服务运行情况 ,2、3、4、5级别开机会自动启动crond服务
chkconfig crond off//取消开机自动启动crond服务:

四、crontab使用

4.1、crontab语法

 crontab [options] file
 crontab [options]
 crontab -n [hostname]

常用选项:

选项功能
-u user用来设定某个用户的 crontab 服务,例如 -u test 表示设置 test用户的 crontab 服务,此选项一般只有 root 用户有权限来运行
-e编辑某个用户的 crontab 文件内容,如果不指定用户,则表示编辑当前用户的 crontab 文件
-l显示某用户的 crontab 文件内容,如果不指定用户,则表示显示当前用户的 crontab 文件内容
-r从 /var/spool/cron 删除某用户的 crontab 文件,如果不指定用户,则默认删除当前用户的 crontab 文件
-i在删除用户的 crontab 文件时,给与确认提示
语法:
crontab [-u username] [-l|-e|-r]

示例:
# 用root用户执行以下命令,给test用户创建定时任务
crontab -u test -e

# root用户要查看自己的详细crond服务内容
命令:crontab -u root -l

说明:在crontab [选项] file 命令中, file 指的是命令文件的名字,表示将 file 作为 crontab 的任务列表文件并载入 crontab,若在命令行中未指定文件名,则此命令将接受标准输入(键盘)上键入的命令,并将它们键入 crontab, 例如:crontab -u test /root/jobs.txt ,表示用/root/jobs.txt 这个文件中的任务列表载入crontab。

4.2、定时任务设置

1.直接输入命令crontab -e 或者编辑文件/etc/crontab 就可以直接设置定时任务。

crontab -e   //若命令是root用户执行,建议直接使用编辑/etc/crontab的方式
或者
vi /etc/crontab

说明: crontab -e 会进入编辑模式,当输入的命令格式正确后会保存到/var/spool/cron目录下,以当前用户命名;

在这里插入图片描述

这里我们讲解系统任务调度的模式,即编辑/etc/crontab文件

1. 输入 vi /etc/crontab
2. 按下 i 键进入到编辑模式
3. 输入定时命令 (文件路径必须是绝对路径)
0 */1 * * * /home/work/start-service.sh
4. 然后按下 esc 退出编辑模式
5. 按下 shift+: 输入 wq 退出 crontab
6. 输入以下命令使任务生效
crontab /etc/crontab
7. 查看当前系统中的定时任务列表
crontab -l

在这里插入图片描述

4.3、定时任务格式

我们看到/etc/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
 分  时 日 月 周 [用户名]    <要执行的命令>
分钟 小时 日期 月份 星期 (crontab表达式)
user-name 指的是执行这个定时任务的用户
command to be executed : 运行的命令

示例:每分钟以root用户执行/root/1.sh脚本
* * * * * root bash /root/1.sh

每个字段代表的含义如下:

  • minute: 表示分钟,可以是从0到59之间的任何整数。
  • hour:表示小时,可以是从0到23之间的任何整数。
  • day:表示日期,可以是从1到31之间的任何整数。
  • month:表示月份,可以是从1到12之间的任何整数。
  • week:表示星期几,可以是从0到7之间的任何整数,这里的0或7代表星期日。
  • command:要执行的命令,可以是系统命令,也可以是自己编写的脚本文件。

在以上各个字段中,还可以使用以下特殊字符:

  • 星号(*):代表所有可能的值,例如month字段如果是星号,则表示在满足其它字段的制约条件后每月都执行该命令操作。
  • 逗号(,):可以用逗号隔开的值指定一个列表范围,例如,“1,2,5,7,8,9”
  • 中杠(-):可以用整数之间的中杠表示一个整数范围,例如“2-6”表示“2,3,4,5,6”
  • 正斜线(/):可以用正斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次。同时正斜线可以和星号一起使用,例如*/10,如果用在minute字段,表示每十分钟执行一次。

注意:在 crontab 命令中只有 “绝对路径”,不存在相对路径,故执行任何命令都需要写绝对路径

4.4 crontab表达式在线验证

https://tool.lu/crontab
Linux crontab 命令 | 菜鸟教程

五、实例

案例1:要求每分钟执行一次 以root用户执行1.sh脚本

* * * * * root /bin/bash /root/1.sh

案例2:要求每天的凌晨3点执行一次 执行 touch /tmp/testfile.txt命令

0 3 * * * /usr/bin/touch /tmp/testfile.txt

案例3:要求每天上午7,9,12点各执行一次

0 7,9,12 * * *  /app/Projects/bin/start.sh -config=/data/application.yml >> /data/info.log 2>&1

案例4:要求在每天上午的7点每隔2分钟执行一次(0分钟的时候执行)

*/7 7 * * *  echo "Have a good dream" >> /tmp/test.txt

案例5:要求每个月的1号的星期一执行一次

0 0 1 * 1

案例6:要求每天的8 - 11点每隔5分钟执行一次

*/5 8,9,10,11 * * *
或者

*/5 8-11 * * *

案例7:要求每天的21点到凌晨3点,每个5分钟执行一次

*/5 21-3 * * *
或者

*/5 21-23,0-3 * * *

案例8:要求每天上7点开始,每隔两分钟执行一次

*/2 7-23 * * *

案例9:要求每天上7点开始,每隔两小时的两分钟执行一次

*/2 7-23/2 * * *

案例10:要求工作日(1-5)的7点和下午两点执行一次

0 7,14 * * 1,2,3,4,5

六、定时任务的日志

当定时任务出现错误的时候,需要排查错误,就需要到定时任务日志文件中去查询错误的原因

/var/log/cron : 可以查看到执行那些定时任务
/var/log/messages: 记录系统操作的日志,(例如:用户登录)

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1025695.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

以太网ARP测试实验

1.1 ARP测试整体框架 当上位机发送ARP请求时&#xff0c;FPGA返回ARP应答数据&#xff1b;当按下FPGA的触摸按键时&#xff0c;FPGA发送ARP请求&#xff0c;上位机返回ARP应答数据。 PLL时钟对eth_rxc的输入时钟进行相位调整&#xff1b;GMII TO RGMI 模块负责将双沿(DDR)数据和…

树莓派安装mariadb

mariadb与mysql十分类似&#xff0c;他们的使用方法类似&#xff0c;默认端口也都是3306 文章参考 树莓派mysql安装配置 – 蒋智昊的博客 目录 1 树莓派系统情况 2 安装mariadb 3 启动数据库 4 设置数据库自启动 5 进入数据库 1 树莓派系统情况 用的是树莓派4&…

Linux性能调优 —— 内存篇

Linux性能调优 —— 内存篇 Linux内存的工作原理 内存映射的概念 虚存空间分布 内存分配与回收 分配 回收 内存查看与分析 查看内存使用情况 命令&#xff1a;free 命令&#xff1a;vmstat 命令&#xff1a;top 分析单个进程 命令&#xff1a;ps -p Linux内存的工作原理…

把api_key 设置成win10系统变量然后python调用

1 设置环境变量存储秘钥 将API密钥存储在环境变量中&#xff0c;而不是直接写在代码中&#xff0c;可以降低泄露密钥的风险。 新建系统变量&#xff1a; 变量名&#xff1a;OPENAI_API_KEY 变量值&#xff1a;OpenAI API秘钥(上一步复制的那个key) 2获取值 import openai i…

torch.cuda.is_available() 在有的项目中返回True有的返回Flase

问题描述&#xff0c;刚下了一个项目&#xff0c;不能用CUDA 同一个环境不同项目中 torch.cuda.is_available() 返回值不同 问题来源&#xff1a; 这里的运行配置有问题 选择编辑配置并修改对应的解释器 查看 和 是否对应。 import torch print(torch.__version__) prin…

iOS蓝牙 Connection Parameters 关键参数说明

1. 先贴苹果文档 《 Accessory Design Guidelines for Apple Devices 》 2. 几个关键词 connection Event Interval 事件间隔&#xff0c;为1.25ms的倍数。可以简单理解为,是两个连接着的蓝牙设备发送“心跳包”的时间间隔&#xff1b; 范围是 6 ~ 3200&#xff0c;即 7.5…

运算符超详细讲解(系统性学习day5)

目录 前言 一、运算符的概念与分类 二、算术运算符 三、关系运算符 四、逻辑运算符 五、赋值运算符 六、运算符的优先级 总结 前言 本篇文章是对运算符的具体讲解。 一、运算符的概念与分类 概念&#xff1a; 运算符就是一种告诉编译器执行特定的数学或逻辑操作的符…

HarmonyOS开发:解决DevEco Studio低版本导入高版本项目运行失败问题

前言 基于DevEco Studio 4.0 Beta2&#xff0c;hvigorVersion为3.0.2&#xff0c;开发了一个项目&#xff0c;上传到了远程仓库&#xff0c;当同事下载后&#xff0c;却始终无法运行&#xff0c;频繁报错&#xff0c;由于API都是使用的9&#xff0c;第一感觉就是开发环境不同&a…

【LeetCode-简单题KMP】232. 用栈实现队列

文章目录 题目方法一&#xff1a;用输入栈和输出栈模拟队列 题目 方法一&#xff1a;用输入栈和输出栈模拟队列 只有输出栈为空的时候才能将输入栈的元素补充到输出栈&#xff0c;否则输出栈不为空&#xff0c;如果再从输入栈往输出栈填充元素&#xff0c;就会弄乱队列的先进先…

Zotero的下载与使用

Zotero的下载与使用 一、Zotero的下载二、Zotero的使用1、导入文献&#xff08;1&#xff09;直接拖入&#xff08;2&#xff09;在线导入 2、wps插入文献参考3、联动sci hub 实现英文文献一键批量下载 一、Zotero的下载 下载官网&#xff1a;https://www.zotero.org/ 下载地址…

关于feign调用之间boolean类型的序列化问题

报错内容是这样的&#xff1a;这是controller层 这是feign调用层&#xff1a; 调试出错1&#xff1a; 调试出错2&#xff1a; 解决办法&#xff1a;

Pytorch史上最全torch全版本离线文件下载地址大全(9月最新)

以下为pytorch官网的全版本torch文件离线下载地址 torch全版本whl文件离线下载大全https://download.pytorch.org/whl/torch/其中的文件版本信息如下所示&#xff08;部分版本信息&#xff0c;根据需要仔细寻找进行下载&#xff09;&#xff1a;

STM32F4X UCOSIII 消息队列

STM32F4X UCOSIII 消息队列 消息队列消息队列的作用消息队列工作机制消息队列创建消息发送消息发送模式FIFO(先进先出)LIFO(后进先出) 消息接收消息队列删除消息队列常用函数消息队列创建函数消息队列发送函数消息队列接收函数消息队列删除函数 UCOSIII 消息队列例程 消息队列 …

Foxit PDF SDK Windows 9.1 Crack

Foxit PDF SDK 变更日志 Windows/Linux/Mac 2023 年 8 月 新功能/增强功能 在开始签名之前设置外观。支持使用共享字典添加签名。允许在调用 Signature::StartSign() 之前增量保存文档。在签名前修改现有未签名分页印章签名的外观。支持使用共享字典添加分页签名。忽略全角…

【c语言】指针和数组笔试题

1.指针和数组笔试题解析 一维数组 int a[] { 1,2,3,4 };printf("%d\n", sizeof(a));//a单独放在sizeof内表示求整个数组的字节-----16printf("%d\n", sizeof(a 0));//a不是单独放在sizeof内部&#xff0c;表明是首元素的地址&#xff0c;地址占4/8个字节…

五个很实用的IDEA使用技巧

日常开发中&#xff0c;相信广大 Java 开发者都使用过 IntelliJ IDEA 作为开发工具&#xff0c;IntelliJ IDEA 是一款优秀的 Java 集成开发环境&#xff0c;它提供了许多强大的功能和快捷键&#xff0c;可以帮助开发者提高编码效率和质量。除了一些常见的技巧&#xff0c;如自动…

[篇五章五]-如何禁用 Windows Defender-我的创作纪念日

################################################## 目录 禁用掉烦人的 Windows Defender 在本地组策略编辑器中禁用 Windows Defende 关闭 Microsoft Defender 防病毒 禁止 Defender 开机自动运行 重新激活 Windows Defender #######################################…

字符串函数和内存函数详解(2)

&#x1f435;本文会将会对剩余的字符串库函数和内存函数进行讲解 1.strstr&#x1f4da; 1.1函数用法✏️ strstr函数原型&#xff1a; strstr用于在字符串中找子串&#xff0c;strstr会返回str1中出现str2的起始地址&#xff0c;如果在str1中没有找到str2&#xff0c;则返回…

FreeRTOS移植以及核心功能

文章目录 freertos和ucos区别&#xff0c;优缺点比较移植步骤核心功能内存管理&#xff08;5种内存管理策略&#xff09;FreeRTOS任务调度算法有三种时间管理通信管理 栈管理 freertos和ucos区别&#xff0c;优缺点比较 FreeRTOS&#xff08;Free Real-Time Operating System&…

jdk20 download 配置(linux window mac)

download 直达链接 jdk20,17 wget https://download.oracle.com/java/20/latest/jdk-20_linux-x64_bin.deb # 类似格式替换包的名称就可以实现终端下载jdk下载登录/oracle账号 下载jdk有可能存在要求登录帐号的情况 # 好心人的帐号 账号&#xff1a; 59968873qq.com 密码&…