cron服务执行定时任务

news/2024/12/14 13:01:13/

参考链接

cron表达式在线解析:quartz/Cron/Crontab表达式在线生成工具-BeJSON.com

定时任务运行时报错解决方法

运行脚本报 权限不够问题:

可以在脚本文件夹下直接执行 如下指令运行RequestAPI.sh 脚本

 ./RequestAPI.sh        

如果出现权限不够问题,运行如下指令:

chmod 777 ./RequestAPI.sh  或  chmod +x ./RequestAPI.sh     开放脚本文件权限

cron相关命令

命令功能

命令

说明

启动服务service crond start启动文件路径:/sbin/service crond start
关闭服务service crond stop
重启服务service crond restart
从新载入配置service crond reload
查看服务状态service crond status
创建编辑调度任务crontab -e编辑的是/var/spool/cron下对应用户的cron文件,也可以直接修改/etc/crontab文件,输入定时任务,然后保存退出即可。
查看该用户下的crontab服务是否创建成功 crontab  -l 列出当前的所有调度任务
列出用户jp的所有调度任务crontab -l -u jp
删除所有任务调度工作 crontab -r
查看服务是否已经运行ps -ax | grep cron
查看某个用户的定时任务crontab -u plan -lplan为指定的用户名
删除某个用户的定时任务crontab -u plan -r
编辑某个用户的定时任务crontab -u plan -e
加入开机自动启动chkconfig --level 35 crond on


 

cron文件语法:

Minute Hour Day Month Dayofweek   command

   分     小时    日       月       星期     命令

0-59   0-23   1-31   1-12     1-7     command     (取值范围,表示周日一般一行对应一个任务)

记住几个特殊符号的含义:

“*”代表取值范围内的数字,
         “/”代表”每”,
         “-”代表从某个数字到某个数字,
         “,”分开几个离散的数字

     每个字段代表的含义如下:
     Minute             每个小时的第几分钟执行该任务
     Hour               每天的第几个小时执行该任务
     Day                 每月的第几天执行该任务
     Month             每年的第几个月执行该任务
     DayOfWeek     每周的第几天执行该任务
     Command       指定要执行的程序
     在这些字段里,除了“Command”是每次都必须指定的字段以外,其它字段皆为可选字段,可视需要决定。对于不指定的字段,要用“*”来填补其位置。*号之间需要有空格,表示每一个数字位,如果使用 / 说明每的时候,前面必须加星号

crontab每分钟定时执行:


*/1 * * * * service mysqld restart   ##每隔1分钟执行一次
*/10 * * * * service mysqld restart  ##每隔10分钟执行一次,从启动后开始的第一个十分钟开始执行,例如6:25开启启动,6:30执行第一次,然后6:40····

crontab每小时定时执行:

0 */1 * * * service mysqld restart   ##每1小时执行一次0 */2 * * * service mysqld restart   ##每2小时执行一次0 */12 * * * service mysqld restart   ##每12小时执行一次,例如:8:36分启动,从启动开始,到12点执行第一次,然后0:00执行第二次

crontab每天定时执行:

0 10 * * * service mysqld restart    ##每天10点执行30 19 * * * service mysqld restart   ##每天19点30分执行1 12 * * * service mysqld restart    ##每天12点01分执行1 0 * * * service mysqld restart    ##每天0点01分执行

crontab每周定时执行:

0 10 * * 1 service mysqld restart    ##每周一10点执行30 17 * * 5 service mysqld restart   ##每周五17点30分执行

crontab每年定时执行:

0 10 1 10 * service mysqld restart   ##每年的10月1日10点执行0 20 8 8 * service mysqld restart    ##每年的8月8日20点执行

定时运行脚本命令举例

创建脚本文件夹(mkdir命令)并命名为Userscript,在脚本文件夹中创建脚本文件(touch命令),以功能命名,例如请求接口可以命名为RequestAPI.sh

创建一个文件名为result_list.yaml文件

运行crontab -e ,添加如下内容,先 cd到  脚本 目录,然后 再  && 执行脚本

*/10 * * * * cd /root/Scriptfile/RequestAPI && ./RequestAPI.sh        每十分钟运行一次/root/Scriptfile/ RequestAPI文件夹下RequestAPI.sh 脚本

0 */1 * * * cd /root/Scriptfile/RequestAPI && ./RequestAPI.sh        每一小时运行一次/root/Scriptfile/ RequestAPI文件夹下RequestAPI.sh 脚本

 重新加载定时器

##如果是修改定时器,设置完成之后需要重新加载定时器,否则会执行修改前的定时器service crond reload

         普通用户执行corntab 需要先安装crontabs,      sudo yum install crontabs

         接收API接口的文件使用 yaml 格式,json 格式文件得单独安装插件打开

​
#!/bin/sh#打印开始执行时间starttime=$(date +%Y-%m-%d\ %H:%M:%S)#将开始执行时间保存到result_list.yaml文件中echo $starttime >> result_list.yaml#调用接口,并把接口返回的数据保存到result_list.yaml文件中curl --location --request POST 'https://www.mellaserver.com/api/mellaserver/user/mellaLogin' \--header 'Content-Type: application/json' \--data '{"email": "123@qq.com","hash": "123456","identityTypeId":1}' >> result_list.yaml#打印执行结束时间endtime=$(date +%Y-%m-%d\ %H:%M:%S)echo $endtime >> result_list.yaml​

定时访问接口举例

0 0 * * * wget http://192.144.141.166:8083/qingzhutool/hotel/recommend/sendmail/2bigAreaManager

定时请求接口数据举例

访问接口数据格式:

curl --location --request POST '填写url' \
--header 'xxxx: xxxxxxxxxxxxx' \
--header 'Content-Type: application/json' \
--data 'JSON格式'

举例

​
##以下为postman接口转换出命令,已在苹果电脑命令行验证curl --location --request POST 'https://www.mellaserver.com/api/mellaserver/user/mellaLogin' \--header 'Content-Type: application/json' \--data-raw '{"email": "123@qq.com","hash": "123456","identityTypeId":1}'##以下为linux可执行命令,--date后面-raw删掉了,已验证curl --location --request POST 'https://www.mellaserver.com/api/mellaserver/user/mellaLogin' \> --header 'Content-Type: application/json' \> --data '{"email": "123@qq.com","hash": "123456","identityTypeId":1}'​

-H/--header <line>                      自定义头信息传递给服务器

-X/--request <command>           指定什么命令

-d/--data <data>                         HTTP POST方式传送数据

--location                                     Follow redirects (H) 跟随重定向

--raw                                            Do HTTP "raw", without any transfer decoding (H) 执行HTTP“raw”,无需任何传输解码
 

curl发起http请求,追加到已有文件

#从nacos配置中心拉取配置数据
#!/bin/bash
RESULT=$(curl -s "http://localhost:8844/nacos/v1/cs/configs?dataId=global-config.yaml&group=test&tenant=global-config-info-namespace")
echo $RESULT >> default_values.yaml
 


定时任务详细说明 


在LINUX中,周期执行的任务一般由cron这个守护进程来处理[ps -ef|grep cron]。cron读取一个或多个配置文件,这些配置文件中包含了命令行及其调用时间。
cron的配置文件称为“crontab”,是“cron table”的简写。


 
1、cron在3个地方查找配置文件
/var/spool/cron/ 这个目录下存放的是每个用户包括root的crontab任务,每个任务以创建者的名字命名。
/etc/crontab 这个文件负责安排由系统管理员制定的维护系统以及其他任务的crontab。
/etc/cron.d/ 这个目录用来存放任何要执行的crontab文件或脚本。
 
2、权限
crontab权限问题到/var/adm/cron/下一看,文件cron.allow和cron.deny是否存在
用法如下: 
1、如果两个文件都不存在,则只有root用户才能使用crontab命令。 
2、如果cron.allow存在但cron.deny不存在,则只有列在cron.allow文件里的用户才能使用crontab命令,如果root用户也不在里面,则root用户也不能使用crontab。 
3、如果cron.allow不存在, cron.deny存在,则只有列在cron.deny文件里面的用户不能使用crontab命令,其它用户都能使用。 
4、如果两个文件都存在,则列在cron.allow文件中而且没有列在cron.deny中的用户可以使用crontab,如果两个文件中都有同一个用户,
以cron.allow文件里面是否有该用户为准,如果cron.allow中有该用户,则可以使用crontab命令。

4、在crontab文件中如何输入需要执行的命令和时间
该文件中每行都包括六个域,其中前五个域是指定命令被执行的时间,最后一个域是要被执行的命令。
每个域之间使用空格或者制表符分隔。格式如下: 
minute hour day-of-month month-of-year day-of-week commands
分钟 小时 每个月的哪天 每年的哪月 每个星期的礼拜几 需执行的命令
合法值 00-59 00-23 01-31 01-12 0-6 (0 is sunday) commands(代表要执行的脚本)
除了数字还有几个个特殊的符号就是"*"、"/"和"-"、",",*代表所有的取值范围内的数字,"/"代表每的意思,"/5"表示每5个单位,"-"代表从某个数字到某个数字,","分开几个离散的数字。
 
几个例子:
每五分钟执行一次: */5 * * * *
每小时执行一次 : 0 * * * *
每天执行一次: 0 0 * * *
每周执行一次: 0 0 * * 0
每月执行一次: 0 0 1 * *
每年执行一次: 0 0 1 1 *
 
每天早上6点 
0 6 * * * echo "Good morning." >> /tmp/test.txt //注意单纯echo,从屏幕上看不到任何输出,因为cron把任何输出都email到root的信箱了。
 
每两个小时 
0 */2 * * * echo "Have a break now." >> /tmp/test.txt  
 


cron服务命令的一些参数与说明:

crontab -u //设定某个用户的cron服务,一般root用户在执行这个命令的时候需要此参数  
  crontab -l //列出某个用户cron服务的详细内容
  crontab -r //删除没个用户的cron服务
  crontab -e //编辑某个用户的cron服务
  比如说root查看自己的cron设置:crontab -u root -l
  再例如,root想删除fred的cron设置:crontab -u fred -r
  在编辑cron服务时,编辑的内容有一些格式和约定,输入:crontab -u root -e
  进入vi编辑模式,编辑的内容一定要符合下面的格式:*/1 * * * * ls >> /tmp/ls.txt
        任务调度的crond常驻命令
        crond 是linux用来定期执行程序的命令。当安装完成操作系统之后,默认便会启动此

任务调度命令。crond命令每分锺会定期检查是否有要执行的工作,如果有要执行的工

作便会自动执行该工作。


http://www.ppmy.cn/news/1555020.html

相关文章

Apache Seatunnel Web 使用指南

Apache Seatunnel Web 使用指南 项目地址:https://gitcode.com/gh_mirrors/sea/seatunnel-web 项目介绍 Apache Seatunnel Web 是一个强大的数据集成平台&#xff0c;旨在简化数据管道的构建和管理过程。它基于著名的 Apache Seatunnel&#xff08;原名 Flatten&#xff09;…

docker安装mysql 实现主从同步

1.安装master 1.1.拉取镜像 docker pull mysql:5.7 1.2.修改配置 创建外部存放Mysql的目录&#xff0c; mkdir /data/mysql 创建配置目录和数据目录 cd /data/mysql mkdir conf.d mkdir mysql.conf.d mkdir log mkdir data 新建my.cnf配置文件&#xff0c;将该配置文件…

游戏引擎学习第39天

开场和欢迎 首先&#xff0c;我们的游戏是从零开始编写的&#xff0c;没有使用任何第三方库或引擎&#xff0c;因此我们从最基础的低层次编码做起。这种方式不仅适合那些对编程有兴趣的开发者&#xff0c;还对教育有很大帮助&#xff0c;因为许多开发者在学习过程中没有机会深…

Jackson将JSON对象转换为字符串

1. 概述 在基于Web的应用程序中&#xff0c;将JSON对象转换为字符串表示是一项常见的任务。 对于Java开发者来说&#xff0c;Jackson库是一个强大的工具&#xff0c;它使JSON处理变得简单。 在这个指南中&#xff0c;我们将使用Jackson库将用户管理系统中的用户对象转换为JS…

【Java Nio Netty】基于TCP的简单Netty自定义协议实现(万字,全篇例子)

基于TCP的简单Netty自定义协议实现&#xff08;万字&#xff0c;全篇例子&#xff09; 前言 有一阵子没写博客了&#xff0c;最近在学习Netty写一个实时聊天软件&#xff0c;一个高性能异步事件驱动的网络应用框架&#xff0c;我们常用的SpringBoot一般基于Http协议&#xff0…

数据结构面试题整理

1. 简述什么是数据结构&#xff1f; 数据结构就是一种组织和存储数据的方式&#xff0c;使得我们可以高效地访问和修改数据。就像你整理房间一样&#xff0c;不同的物品有不同的收纳方式&#xff0c;数据也有不同的存储和管理方法。 比如&#xff0c;数组就像一个排成一排的抽…

【PostgreSQL异常解决】PostgreSQL 异常错误: PG::Error 服务意外关闭连接

博主介绍:✌全网粉丝21W+,CSDN博客专家、Java领域优质创作者,掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域✌ 技术范围:SpringBoot、SpringCloud、Vue、SSM、HTML、Nodejs、Python、MySQL、PostgreSQL、大数据、物联网、机器学习等设计与开发。 感兴趣的可…

docker的简单基本操作

三个命令如下&#xff1a; docker ps docker run id号(可只输入3位确定) /bin/bashdocker exec -it id号 /bin/bash 功能如下 docker ps&#xff1a;列出正在运行的容器。docker run -it <image> /bin/bash&#xff1a;启动一个新的容器&#xff0c;并进入 Bash s…