crond是什么?

crond 和crontab是不可分割的。crontab是一个命令,常见于Unix和类Unix的操作系统之中,用于设置周期性被执行的指令。该命令从标准输入设备读取指令,并将其存放于“crontab”文件中,以供之后读取和执行。该词来源于希腊语chronos(χρόνος),原意是时间。

而crond正是它的守护进程。cron服务是一个定时执行的服务,可以通过crontab 命令添加或者编辑需要定时执行的任务。

linux定时任务分为两种

1)系统自身轮训的任务,比如定时(5天或者一周)备份/var/log/message等日志文件(系统的定时任务一般分为七段或者八段(centos6以下),以空格分割)

系统轮训的配置文件/etc/logrotate.conf  (centos7以下的在/etc/cron.daily/logrotate/logrotate.conf )

2)用户执行的定时任务(用户的定时任务一般分为六段)

at适合执行一次就结束的调度任务

anacrontab适合于非7*24小时开机的服务器准备的,是以天为单位执行的,不能指定以分钟的定时任务,在停机期间没有任务执行,可以开机时执行。

cron服务是Linux的内置服务,但它不会开机自动启动,可以每分钟执行任务。可以用以下命令启动和停止服务:

/bin/systemctl start crond
/bin/systemctl stop crond
/bin/systemctl restart crond
/bin/systemctl reload crond
/bin/systemctl status crond

以上1-5行分别为启动、停止、重启服务和重新加载配置、查看服务状态

把cron设为在开机的时候自动启动

vi /etc/rc.local

/bin/systemctl start crond.service

crontab操作

crontab -u //设定某个用户的cron服务
crontab -l //列出某个用户cron服务的详细内容
crontab -r //删除某个用户的cron服务
crontab -e //编辑某个用户的cron服务
crontab -i //打印提示,输入yes等确认信息

/var/spool/cron/root (以用户命名的文件) 是所有默认存放定时任务的文件
/etc/cron.deny 该文件中所列出用户不允许使用crontab命令
/etc/cron.allow 该文件中所列出用户允许使用crontab命令,且优先级高于/etc/cron.deny

/var/log/cron    该文件存放cron服务的日志

基本格式

# 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
定时任务的每段为:分,时,日,月,周,用户,命令
第1列表示分钟1~59 每分钟用*或者 */1表示
第2列表示小时1~23(0表示0点)
第3列表示日期1~31
第4列表示月份1~12
第5列标识号星期0~6(0表示星期天)
第6列要运行的命令

*:表示任意时间都,实际上就是“每”的意思。可以代表00-23小时或者00-12每月或者00-59分
-:表示区间,是一个范围,00 17-19 * * * cmd,就是每天17,18,19点的整点执行命令
,:是分割时段,30 3,19,21 * * * cmd,就是每天凌晨3和晚上19,21点的半点时刻执行命令
/n:表示分割,可以看成除法,*/5 * * * * cmd,每隔五分钟执行一次

基本使用

crontab -l -u root       #查看root用户
0 */1 * * * command
0 */2 * * * command
crontab -e                  #编辑定时任务,在编写时会检查语法,而echo,或者vi编辑配置时不会检查(visudo也会检查语法)
0 */1 * * * command
0 */2 * * * command

crontab文件的一些例子:
1)30 21 * * * /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每晚的21:30重启apache。
2)45 4 1,10,22 * * /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每月1、10、22日的4 : 45重启apache。
3)10 1 * * 6,0 /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每周六、周日的1 : 10重启apache。
4)0,30 18-23 * * * /usr/local/etc/rc.d/lighttpd restart
上面的例子表示在每天18 : 00至23 : 00之间每隔30分钟重启apache。最后一次的任务执行时间为23:30

5)0 23 * * 6 /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每星期六的11 : 00 pm重启apache。

6)* */1 * * * /usr/local/etc/rc.d/lighttpd restart
每一小时重启apache(错误的)
*代表每分钟就执行一次,上面的语句的意思为每隔一小时的每分钟都在执行重启apache

*/60 * * * * #每60分钟即每小时执行一次
*/105 * * * * #每105分钟执行一次

7)* 23,00-7/1 * * * /usr/local/etc/rc.d/lighttpd restart
晚上11点到早上7点之间,每隔一小时重启apache(错误的)

上面的定时任务的分钟为*号,代表每分钟都在执行,表示晚上23点和凌晨0-7点之间每隔一小时的每分钟都在再行重启apache

8)0 11 4 * mon-wed /usr/local/etc/rc.d/lighttpd restart
每月的4号与每周一到周三的11点重启apache(周和日尽量不要同时使用)
9)0 4 1 jan * /usr/local/etc/rc.d/lighttpd restart
一月一号的4点重启apache

链接参考

其他

root可以创建普通用户cron计划任务   crontab -e -u wgp 

crond不能守护秒级定时任务,通常秒级的定时任务需要自己写shell脚本

#!/bin/bash
whith true
do
echo "hello world!" >>/tmp/log.txt
sleep
done sh test.sh & 放到后台执行 tail -f /tmp/log.txt 查看文件变化
在编辑里面要加上注释来区分是谁编写的
00 09,14 * * 6,0 /bin/bash /server/scripts/test.sh >/dev/null 2>&1 
每周六,日的上午九点和下午14点执行test.sh,并把标准错误2和标准输出1定位到空文件
*/1 * * * * echo + >>/tmp/log.log  >/dev/null 2>&1
注意:定时规则如果是命令在已经有了一个重定向符号>>,再加上一个重定向/dev/null 2>&1,是没有结果的
命令放定时任务里面,时间的%必需要转义\%
cron服务的日志文件在/var/log/cron文件下 要注意环境变量给定时任务带来的影响,特别是与java服务相关的变量,定时任务只能识别很少的系统变量,同时也要避免不必要的命令打印输出
Quartz可以实现秒级任务

crond编辑三种定时方式

第一种:在/etc/crontab下设置,指定用户名的(不专业写法,一般不写在这里面)
1、vim命令进入/etc/crontab
2、在最后一行加上
59 23 * * * root /root/catalina.out.rm/rm_8080_8081_catalina.sh
如下说明:
3、重启crontab,使配置生效
/bin/systemctl restart crond.service
 
第二种:直接用crontab -e,不需要指定用户,如果是root权限,默认是root定时的
1、crontab -e进入
2、:wq退出保存
3、查看上面那个脚本是否有执行权限
4、还要看脚本里面的涉及的操作文件是否有权限
5、重启crontab,使配置生效
/bin/systemctl restart  crond.service
 
第三种:直接写入/var/spool/cron/root(是用户名称)
1.vi  /var/spool/cron/root

2.保存退出,crontab -l

3.tail -f /tmp/log.log

crontab定时任务执行不成功

1.查看定时任务有没有开启
2.符号*号是否弄懂,是否写错,代表每一分钟,小时,日,月,周
3.执行权限等等
4.执行的脚本或者写入文件的目录是否存在,是否是绝对路径
5.是否有系统变量,定时任务对系统变量的识别很少,比如写个tomcat定时关机,手工ok,但是脚本就是不执行
6.命令放定时任务里面,时间的%必需要转义\%
7.多看定时任务日志
8.企业故障案例一(https://www.cnblogs.com/p0st/p/9720120.html)
 
windows定时任务
所有程序->附件->系统工具->计划任务程序
邮件单击【任务计划程序库】->【创建基本任务】

 

Centos7 利用crontab定时执行任务及配置方法的更多相关文章

  1. Centos7:利用crontab定时执行任务

    cron服务是Linux的内置服务,但它不会开机自动启动.可以用以下命令启动和停止服务: /sbin/service crond start /sbin/service crond stop /sbi ...

  2. Linux命令之Crontab定时任务,利用Crontab定时执行spark任务

    Linux命令之Crontab定时任务,利用Crontab定时执行spark任务 一.Linux命令之Crontab定时任务 1.1 常见Crontab任务 1.1.1 安装crontab 1.1.2 ...

  3. 如何使用Linux的Crontab定时执行PHP脚本的方法

    我们的PHP程序有时候需要定时执行,我们可以使用ignore_user_abort函数或是在页面放置js让用户帮我们实现.但这两种方法都不太可靠,不稳定.我们可以借助Linux的Crontab工具来稳 ...

  4. 如何使用Linux的Crontab定时执行PHP脚本的方法[转载]

    首先说说cron,它是一个linux下的定时执行工具.根用户以外的用户可以使用 crontab 工具来配置 cron 任务.所有用户定义的 crontab 都被保存在/var/spool/cron 目 ...

  5. Centos 7下利用crontab定时执行任务详解

    一 cron服务 cron服务是Linux的内置服务,但它不会开机自动启动.可以用以下命令启动和停止服务: /sbin/service crond start /sbin/service crond ...

  6. linux crontab定时执行

    #利用crontab定时执行url研究了两种简单方式#一利用lynx访问url yum install lynxservice crond startcrontab -einsert键* * * * ...

  7. crontab定时执行任务

    第一部分 crontab介绍 每个操作系统都有它的自动定时启动程序的功能,Windows有它的任务计划,而Linux对应的功能是crontab. crontab简介 crontab命令常见于Unix和 ...

  8. 利用crontab定时提交svn遇到的几个问题

    交待下背景...公司开发组只有技术经理有服务器和数据库权限,还只是开发环境的..因为工作安排和权限限制,测试同学上线的时候,需要本人帮开发组的部分同事review代码并把代码提交到trunk.一开始手 ...

  9. crontab定时执行shell脚本失败的原因

    有一段时间不用crontab定时执行任务了,这次趁着项目实施的机会来进一步分析一下crontab定时任务设置时遇到的一些棘手的问题. crontab -l 查看目前已经设置的crontab信息 cro ...

随机推荐

  1. 巧妙解决vue2.0关于set添加属性后视图不能更新的问题

    今天在工作中遇到一个问题,郁闷了很久,特地写一篇博客记录一下,方便以后再遇到可以查找,也分享个各位小伙伴,在网上查找很多资料说用Vue.$set设置属性后视图也会更新,但是真相并不是这样,通过等于号赋 ...

  2. 怎么获取泛型T.class类?

    public <T> void get(List<T> list){ getA(T.class); //报错,不能调用T.class } public void getA(Cl ...

  3. Linux文件系统的基本结构

    Linux文件系统结构 通过下面两张图片来认识一下Linux文件系统的结构. 当前工作目录 实践: 文件名称 这些规则不仅适用于文件,也适用于文件夹. 实践: ls命令 ls命令表示列出当前工作目录的 ...

  4. MySQL查询执行的基础——查询优化处理

    查询的生命周期的下一步是将一个SQL转换成一个可执行计划,MySQL再按照这个计划和存储引擎进行交互 语法解析器和预处理 首先,MySQL通过关键词将SQL语句进行解析,并生成一颗对应的"解 ...

  5. ARM与FPGA通过spi通信设计2.spi master的实现

    这里主要放两个代码第一个是正常的不使用状态机的SPI主机代码:第二个是状态机SPI代码 1.不使用状态机:特权同学<深入浅出玩转FPGA>中DIY数码相框部分代码: /////////// ...

  6. arcgis api 3.x for js 入门开发系列六地图分屏对比(附源码下载)

    前言 关于本篇功能实现用到的 api 涉及类看不懂的,请参照 esri 官网的 arcgis api 3.x for js:esri 官网 api,里面详细的介绍 arcgis api 3.x 各个类 ...

  7. 关于ipv6被拒的问题

    遇到ipv6被拒,你首先要搭建一个ipv6的环境,进行测试一下,如果在ipv6环境下没有问题,那你就可以再次直接提交,或者重新打包提交.再次提交的时候,你可以录制一段在ipv6环境下运行的一段视频 上 ...

  8. (四)版本控制管理器之VSS

    在上一篇<(二)版本控制管理器值CVS(下)>的文章中,我为大家介绍了CVS这个版本控制器,接下来我继续跟大家分享介绍下一个版本控制管理器--VSS,为什么要说这个版本控制器呢?早已过时的 ...

  9. 【转载】xilinx 高速收发器Serdes深入研究

    此篇文章深入浅出介绍了关于高速串行收发器的几个重要概念和注意事项,为方便知识点复习总结和后续查阅特此转载,原文标题及链接为:xilinx 高速收发器Serdes深入研究 - CSDN博客   http ...

  10. idea软件破解汉化

    →http://idea.lanyus.com/上可以找到最新的破解补丁,下载并放到软件的bin目录下  →更改bin目录下的两个文件:Idea.exe.vmoptions和Idea64.exe.vm ...