Linux中Cron任务间隔执行:每隔几分钟/几小时/几天
一、配置
1)全局用户配置文件(/etc/crontab)
直接VI等编辑就可以。
2)个人用户配置(临时配置)
二、配置格式
* * * * * command
分钟(0-59) 小时(0-23) 日期(1-31) 月份(1-12) 星期(0-6,0代表星期天) 命令
第1列表示分钟1~59 每分钟用*或者 */1表示
第2列表示小时1~23(0表示0点)
第3列表示日期1~31
第4列表示月份1~12
第5列标识号星期0~6(0表示星期天)
第6列要运行的命令
相关参数详细说明:
星号(*)可以用来代表所有有效的值。譬如,月份值中的星号意味着在满足其它制约条件后每月都执行该命令。三、配置实例
整数间的短线(-)指定一个整数范围。譬如,1-4 意味着整数 1、2、3、4。
用逗号(,)隔开的一系列值指定一个列表。譬如,3, 4, 6, 8 标明这四个指定的整数。
正斜线(/)可以用来指定间隔频率。在范围后加上 /<integer> 意味着在范围内可以跳过 integer。譬如,0-59/2 可以用来在分钟字段定义每两分钟。间隔频率值还可以和星号一起使用。例如,*/3 的值可以用在月份字段中表示每三个月运行一次任务。
开头为井号(#)的行是注释,不会被处理。
0 */1 * * * ls
#每隔2个小时执行一次 ls
0 */2 * * * ls
#每隔3个小时执行一次 ls
0 */3 * * * ls
#每隔4个小时执行一次 ls
0 */4 * * * ls
#每隔10天执行一次 ls
0 0 */10 * * ls
#每天1点执行 ls
0 1 * * * ls
出处:https://blog.csdn.net/hot_vc/article/details/48261195
===================================================================
cron 表达式 1小时30分钟,(90分钟或100分钟)执行一次
注:不涉及日历(不指定某月\天(周几)等),比如定时任务的需求:间隔 多少秒/分/时( 每隔99秒,每隔100分钟执行等)
每隔90分钟执行一次
90*2= 180 = 3个小时
需要添加2个cron,间隔3小时
表达式:
cron1 0 30 1/3 * * ? (1.30,4.30,7.30,,,,)
cron2 0 0 0/3 * * ? (3.00,6.00,9.00,,,,)
每隔100分钟
100*3= 300 = 5个小时
需要添加3个cron,间隔5小时;
cron1 0 40 1/5 * * ? (1.40,6.40,11.40,,,)
cron2 0 20 3/5 * * ? (3.20,8.20,13.20,,,,)
cron2 0 0 5/5 * * ? (5.00,10.00,15.00)
每隔2个半小时执行一次
150*2= 300 = 5个小时
需要添加2个cron,间隔5小时
表达式:
cron1 0 30 2/5 * * ? (2.30,7.30,12.30,,,,)
cron2 0 0 0/5 * * ? (5.00,10.00,15.00,,,,)
受其他博文启发,一个定时任务实现不了,那这个任务,就添加多个触发时间,来实现;
需求1:从0点开始,每隔2个半小时,执行一次
思路记录:
1.先列出,我们预期的执行时间:
2.30,5.00,7.30,10.00,12.30,15:00
2.找规律:我们知道间隔 整数(1,2,3,,,)个小时的cron表达式;根据此前提,找间隔 整数个小时 时间的规律
3.规律结果
(2.30,7.30,12.30,,,,) 两点半开始,间隔5小时 那么此表达式==>0 30 2/5 * * ?
(5.00,10.00,15.00,,,,) 0点开始,间隔5小时 那么此表达式==> 0 0/5 * * ?
需求2:在指定时间t后,启动定时任务a,
可以采用:.再添加一个执行定时任务,动态添加那要求任务a,在那指定的时间t开始执行一次,有且只调用一次
总结:间隔 n 个小时,执行一次
1.找出n和60的最小公倍数:gbs;
2.gbs除60=间隔时间tt (tt<23?)
3.gbs除n=cron表达式个数
附加表达式在线测试网站: http://cron.qqe2.com/
注意:粘贴我们自己写的表达cron表达式,查看运行结果时,得核对一下表达式是否被修改;我就遇到 0/3 变===>0-3
原文链接:https://blog.csdn.net/weixin_38981413/java/article/details/103755671
=======================================================================================
详细讲解定时任务cronie
1.定时任务的作用#
- 类似生活中的手机闹钟
- 可以自动完成操作命令(自动清理磁盘,自动同步时间)
- 定时备份系统数据信息(有些公司重要数据文件需要每天人流少的时间进行数据备份)
案例:
/var/log/secure是记录用户登录系统情况的数据文件,万一有黑客恶意破解登录你的服务器,会产生大量登录失败的数据保存这个文件中。当文件数据量大的时候,再查看文件内容会出现刷屏的现象。
解决方法:日志文件需要定期进行数据分割出来
Linux定时软件
- cronie 实现定时任务功能(重点)
- atd 实现定时任务功能 只能一次设置定时功能
- anacron 实现定时任务功能 应用非7*24小时的家用电脑
安装定时任务:yum install -y cronie
查询cronie服务需要关注配置文件
[root @zouxuan ~ ]# rpm -ql cronie
/etc/cron.d
/etc/cron.d/0hourly
/etc/cron.deny # 关注文件
/etc/pam.d/crond
/etc/sysconfig/crond
/usr/bin/crontab # 用户设置定时任务查看命令
/usr/lib/systemd/system/crond.service
/usr/sbin/crond
2.系统定时任务目录#
系统定时任务周期:每小时 控制定时任务目录:/etc/cron.hourly 按照每小时
系统定时任务周期:每一天 控制定时任务目录:/etc/cron.daily 按照一天的00:00-23:59
系统定时任务周期:每一周 控制定时任务目录:/etc/cron.weekly 按照一周7天
系统定时任务周期:每个月 控制定时任务目录:/etc/cron.monthly 按照每月的天数30 28 31
如何利用系统定时任务目录进行定时操作?
第一步:编写定时任务脚本
[root @zouxuan /share ]# vim hour_echo.sh
#每小时向/date/oldboy.txt追加信息
echo "oldboy" >> /date/oldboy.txt
第二步:由于是系统自带定时目录,需要给脚本赋予执行权限
[root @zouxuan /share ]# chmod u+x hour_echo.sh
[root @zouxuan /share ]# ll hour_echo.sh
-rwxr--r--. 1 root root 76 7月 29 17:25 hour_echo.sh
第三步:移动到对应执行周期目录
[root @zouxuan /share ]# mv hour_echo.sh /etc/cron.hourly/
说明:每一小时,系统自动执行脚本
3.crontab命令说明#
1.查看用户定时任务 crontab -l (list) 列表查看用户的设置的定时任务 相当于查看/var/spool/cron目录
[root @zouxuan /etc/cron.daily ]# crontab -l
no crontab for root
# 说明:此时没有设置定时任务
2.用户编写定时任务 crontab -e (edit)
说明:crontab -e 编写定时任务配置信息
visuod 对普通用户授权 相当于编辑 vim /etc/sudoers
crontab -e 编写定时任务 相当于编写 vim /var/spool/cron目录下的用户定时任务文件
root用户设置定时任务配置文件 /var/spool/cron/root
xuan用户设置定时任务配置文件 /var/spool/cron/xuan
4.定时任务实际编写#
1.编写前环境检查
a. 确定定时任务服务是否运行
[root @zouxuan ~ ]# ps -ef | grep crond
root 936 1 0 09:25 ? 00:00:00 /usr/sbin/crond -n
root 2150 2006 0 16:15 pts/0 00:00:00 grep --color=auto crond
b. 确定定时任务服务是否开机启动
[root @zouxuan ~ ]# systemctl status crond
● crond.service - Command Scheduler
Loaded: loaded (/usr/lib/systemd/system/crond.service; enabled; vendor preset: enabled)
Active: active (running) since 二 2020-07-28 09:25:51 CST; 6h ago
Main PID: 936 (crond)
CGroup: /system.slice/crond.service
└─936 /usr/sbin/crond -n
7月 28 09:25:51 zouxuan systemd[1]: Started Command Scheduler.
7月 28 09:25:52 zouxuan crond[936]: (CRON) INFO (RANDOM_DELAY will be scaled with f...d.)
7月 28 09:25:53 zouxuan crond[936]: (CRON) INFO (running with inotify support)
Hint: Some lines were ellipsized, use -l to show in full.
2.编写定时任务信息说明
编写定时任务方法:crontab -e
crontab -e编写定时任务作用
1.可以检查定时任务编写语法是否有误
2.crontab命令简单,方便记忆
系统定时任务编辑样板文件:/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
编写定时任务格式
*** * * * * 具体执行的操作**
第一个星号表示:每分钟做什么操作
第二个星号表示:每小时做什么操作,按照24小时制时间计算
第三个星号表示:每月第几号做什么操作。
第四个星号表示:第哪个月做什么操作,按照1-12月
第五个星号表示:每星期几做什么操作,按照外国的0-6,星期日为0,星期一为1,星期六为6
1.按照数值表示时间信息
00 02 * * * 备份数据 说明:表示每天的凌晨2点整备份数据
2.按照特殊符号表示时间信息
* * * * * 备份数据 说明:表示全天每分钟进行进行备份 PS:定时任务最短执行时间是每分钟
*/5 */5 * * * 备份数据 说明:每隔5小时的每5分钟备份数据
3.定义连续时间内连续备份数据
01-03 03 * * * 备份数据 说明:表示每天的凌晨2点01分到2点03分连续备份数据(3次)
4.指定不连续时间备份数据
00 14,20 * * * 备份数据 说明:逗号表示每天的14点和20点备份数据
编写定时任务格式总结
1.在编写时间信息的时候,如果想表示每隔什么时间执行任务,建议:/上面尽量使用*表示,不要写具体数值
2.编写时间信息尽量从左到右依次书写
3.编写定时任务,日期信息不要和星期信息同属出现
3.实际的编写定时任务
需求:每隔2分钟把/xuan/xuan.txt文件数据备份到/date目录下
# 第一步:编写定时任务的时间信息
*/2 * * * *
# 第二步:备份数据命令
cp /xuan/xuan.txt /date
# 第三步:编写定时任务文件 crontab -e
[root @zouxuan ~ ]# crontab -e
*/2 * * * * cp /xuan/xuan.txt /date
5.定时任务排除方法#
1.检查是否有该用户的定时任务配置文件
[root @zouxuan /xuan ]# ll /var/spool/cron/root
-rw-------. 1 root root 36 7月 28 18:44 /var/spool/cron/root
# 查看定时任务配置信息
[root @zouxuan /xuan ]# cat /var/spool/cron/root
*/2 * * * * cp /xuan/xuan.txt /date
# 命令查看定时任务
[root @zouxuan /xuan ]# crontab -l
*/2 * * * * cp /xuan/xuan.txt /date
2.查看定时任务的日志文件信息,查找错误
[root @zouxuan ~ ]# tail /var/log/cron -f
Jul 28 18:58:12 zouxuan crontab[2333]: (root) **BEGIN** EDIT (root)
# begin 表示开始编写定时任务
Jul 28 18:58:37 zouxuan crontab[2333]: (root) **REPLACE** (root)
# replace 表示编辑修改定时任务
Jul 28 18:58:37 zouxuan crontab[2333]: (root) **END** EDIT (root)
# end 表示结束编辑定时任务
Jul 28 18:54:01 zouxuan crond[936]: (root) **RELOAD** (/var/spool/cron/root)
# reload 表示重新加载定时任务
Jul 28 19:00:01 zouxuan CROND[2337]: (root) **CMD** (cp /xuan/xuan.txt /date)
# cmd 表示执行定时任务
Jul 28 18:57:36 zouxuan crontab[2330]: (root) **LIST** (root)
# list 表示使用 crontab -l 查看定时任务
日志文件显示信息
第一列 执行时间信息
第二列 执行定时任务的主机名
第三列 crontab 表示编写定时任务 crond 表示重新加载定时任务文件 CROND 表示执行定时任务
第四列 显示以什么用户编辑或执行定时任务/干了什么事情
6.定时任务编写总结#
1.编写口诀:什么时间做什么,然后再想下一次什么时候执行 什么时间,做什么事情
定时任务书写例子
每天的上午8点30分,来学校上车(go to school) 30 08 * * * go to school
每天晚上12点准时,回家自己上床(go to bed) 00 12 * * * go to bed
编写定时任务格式总结
1.在编写时间信息的时候,如果想表示每隔什么时间执行任务,建议:/上面尽量使用*表示,不要写具体数值
2.编写时间信息尽量从左到右依次书写
3.编写定时任务,日期信息不要和星期信息同属出现
2.编写定时任务执行命令规范
测试定时执行命令 定时任务执行的命令进行绝对路径
编写定时任务信息 定时任务编写时需要按照语法规范 先编写注释信息,再编写定时任务 crontab -e
检查定时任务效果
- 查看定时任务日志 /var/log/cron
- 查看定时任务效果 先临时修改定时任务每分钟,再最终修改定时任务的时间
排查定时任务问题
- 查看定时任务日志
- 查看定时任务效果
3.编写定时任务执行脚本规范
测试定时执行脚本 定时任务执行的脚本利用绝对路径 /bin/sh shell.sh
编写定时任务信息 定时任务编写时需要按照语法规范 编写注释信息 编写定时任务
检查定时任务效果
- 查看定时任务日志 /var/log/cron
- 查看定时任务效果 先临时修改定时任务每分钟,再最终修改定时任务的时间
排查定时任务问题
- 查看定时任务日志
- 查看定时任务效果
出处:https://www.cnblogs.com/xuanxuan360/p/13398587.html
=======================================================================================
Debian的定时执行命令Crontab
Debian的定时执行命令Crontab,这个相当于Windows的计划任务
想要让Debian定时执行命令就得靠crontab了!
它的功能类似微软的计划任务,可以在您设定的时间执行你想要的命令。
通过编写设定文件可以组合出复杂的执行时段,让命令的执行更加有效率。
cron设置文件在Debian系统下的位置
/etc/crontab
大致内容如下:
01 |
# /etc/crontab: system-wide crontab |
02 |
# Unlike any other crontab you don 't have to run the `crontab' |
03 |
# command to install the new version when you edit this file. |
04 |
# This file also has a username field, that none of the other crontabs do . |
05 |
06 |
SHELL=/bin/sh |
07 |
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin |
08 |
09 |
# m h dom mon dow user command |
10 |
17 * * * * root run-parts --report /etc/cron.hourly |
11 |
25 6 * * * root test -x /usr/sbin/anacron || run-parts --report /etc/cron.daily |
12 |
47 6 * * 7 root test -x /usr/sbin/anacron || run-parts --report /etc/cron.weekly |
13 |
52 6 1 * * root test -x /usr/sbin/anacron || run-parts --report /etc/cron.monthly |
14 |
0 20 1 * * root /usr/bin/updatedb |
15 |
# |
需要设定的是 # m h dom mon dow user command 下面的部份
由左至右相对应的意思为:
分0-59 时0-23 日1-31 月1-12 周0-7 执行命令的用户 命令
其中比较有意思的是:周,0和7都代表星期日
而可以使用的特殊符号有
* (星号) 代表所有时间都接受
, (逗号) 代表同一个分类可以有多少个值
- (减号) 代表在这个时段内执行
/n 代表每n个时间就执行一次
范例:
30 12 * * * command: <em>每天12:30执行command</em>
0 6,12 15 * * command:<em>每月15日的6:00和12:00执行command</em>
10 8 1-15 6 * command:<em>每年6月1至15日的8:10执行command</em>
*/5 * * * 7 command: <em>星期日每隔五分钟执行一次command</em>
定时器语法:
就是上面计划任务的第一部分。它决定了何时执行计划任务。
它包含5部分:
1.分钟(0-59)
2.小时(0-23)
3.一个月的哪一天(1-31)
4.一年中的哪个月(1-12)
5.星期几(0是星期天)
星号 如果某个部分出现的是星号而不是数字,就是说明这个部分表示的时间全部会执行。
可能一时不太容易说清楚,再看例子吧。
示例:
1、下面的计划任务会一直运行
* * * * * [command]
2、下面的计划任务会在每个小时的0分时运行(就是每小时执行一次)
0 * * * * [command]
3、下面依旧是一个每小时运行一次的计划任务。不过是在每个小时的一刻钟时运行的(1:15,2:15.。。)
15 * * * * [command]
4、下面的计划任务每天执行一次,在2:30分
30 2 * * * [command]
5、下面的计划任务是在每个月2号的午夜执行(比如:2010年2月2日00:00)
0 0 2 * * [command]
6、下面的计划任务会在每周一的每个小时0分钟时执行一次
0 * * * 1 [command]
7、下面的会每小时运行3次,在0分,10分,和20分时
0,10,20 * * * * [command]
8、下面是用除号“/”表示每多少运行一次。
*/5 * * * * [command] 每5分钟运行一次
00 */2 * * * [command] 每2小时运行一次 (* */2 * * * [command] 这种写法是错误的!)
*/1 * * * * root wget -O /var/log/cron.txt http://www.592.net/test.php 每分钟访问网站某PHP脚本一次,检查是否每分钟自动运行了PHP,可以查看 var/log/cron.txt文件,看下是否有网站PHP返回的内容就可以了!
9、还可以用“-”表示一个范围,如下表示5到10点的每个整点运行一次
0 5-10 * * * [command]
10、另外还有一个特殊的时间关键字“@reboot”,就是每次重启服务器时运行计划任务
@reboot [command]
设定和管理计划任务
编辑Crontab,来设定计划任务。使用下面的命令,会在vi 里打开crontab的内容以供编辑:
crontab -e
如果你只想看看,不需要编辑,可以使用以下的命令
crontab -l
要删除crontab的内容,就是删除所有的计划任务,可以这样:
crontab -r
cron是个linux下的定时执行工具,能在无需人工干预的情况下运行作业。由于Cron 是Linux的内置服务,但他不自动起来,能用以下的方法启动、关闭这个服务:
编辑/etc/crontab 文件配置cron
cron服务每分钟不仅要读一次 /var/spool/cron 内的所有文件,还需要读一次 /etc/crontab,因此我们配置这个文件也能运用cron服务做一些事情。用crontab配置是针对某个用户的,而编辑/etc/crontab是针对系统的任务。此文件的文件格式是:
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root //如果出现错误,或者有数据输出,数据作为邮件发给这个帐号
HOME=/ //使用者运行的路径,这里是根目录
# run-parts
01 * * * * root run-parts /etc/cron.hourly //每小时执行/etc/cron.hourly内的脚本
02 4 * * * root run-parts /etc/cron.daily //每天执行/etc/cron.daily内的脚本
22 4 * * 0 root run-parts /etc/cron.weekly //每星期执行/etc/cron.weekly内的脚本
42 4 1 * * root run-parts /etc/cron.monthly //每月去执行/etc/cron.monthly内的脚本
大家注意"run-parts"这个参数了,如果去掉这个参数的话,后面就可以写要运行的某个脚本名,而不是文件夹名了。
重启命令:
Debian
/etc/init.d/cron restart
Linux
/etc/rc.d/init.d/crond restart
出处:https://www.cnblogs.com/weifeng1463/p/9155295.html
关注我】。(●'◡'●)
如果,您希望更容易地发现我的新博客,不妨点击一下绿色通道的【因为,我的写作热情也离不开您的肯定与支持,感谢您的阅读,我是【Jack_孟】!
本文来自博客园,作者:jack_Meng,转载请注明原文链接:https://www.cnblogs.com/mq0036/p/12897357.html
【免责声明】本文来自源于网络,如涉及版权或侵权问题,请及时联系我们,我们将第一时间删除或更改!
posted on 2020-05-15 21:46 jack_Meng 阅读(20876) 评论(0) 编辑 收藏 举报