crontab实现linux 自动执行定时任务

crontab 的介绍

crontab命令常见于Unix和类Unix的操作系统之中,用于设置周期性被执行的指令。该命令从标准输入设备读取指令,并将其存放于“crontab”文件中,以供之后读取和执行。该词来源于希腊语 chronos(χρνο),原意是时间。通常,crontab储存的指令被守护进程激活, crond常常在后台运行,每一分钟检查是否有预定的作业需要执行。这类作业一般称为cron jobs。

crond 和crontab是不可分割的,crond正是crontab的守护进程

crontab的应用

(1)
首先确定系统是否安装了crontab, 通过下面的命令来查询:

crontab -l

如果返回"no crontab for root" ,说明已经安装crontab服务了
如果返回 “command not found” 说明系统还没有安装crontab。
(2)安装crontab

如果是ubuntu系统.,可以通过以下命令安装和启动crontab服务

# apt-get install cron  

//启动crontab服务(同时还有service cron stop 停止服务,service cron restart 重启服务)

# service cron start  

如果是centos系统,则通过下面的命令执行安装和启动

# yum install -y vixie-cron  

//rontabs软件包是用来安装、卸装、或列举用来驱动 cron 守护进程的表格的程序

# yum install crontabs

//启动服务   

# /sbin/service crond start   或者  systemctl crond start

//加入开机自动启动

# chkconfig --level 35 crond on

(3)对crond 服务的操作
cron是一个linux下 的定时执行工具,可以在无需人工干预的情况下运行作业。

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

(4)crontab的使用

我们常用的命令如下:

crontab [-u username]    //省略用户表表示操作当前用户的crontab
    -e      (编辑工作表)
    -l      (列出工作表里的命令)
    -r      (删除工作作)

我们用crontab -e进入当前用户的工作表编辑,是常见的vim界面。每行是一条命令。

crontab的语法规则格式:

 crontab 文件中的行由 6 个字段组成,不同字段间用空格或 tab 键分隔。前 5 个字段指定命令要运行的时间 
       分钟 (0-59) 
       小时 (0-23) 
       日期 (1-31) 
       月份 (1-12) 
       星期几(0-6,其中 0 代表星期日)
       第 6 个字段是一个要在适当时间执行的字符串

具体如下图所示:
在这里插入图片描述

示例
每1分钟执行: */1 * * * 或者 * * * *
每五分钟执行一次: */5 * * * *
每天上午9点执行:0 9 * * *
每天上午9点10分执行:10 9 * * *
每小时执行一次 : 0 * * * *
每天执行一次: 0 0 * * *
每周执行一次: 0 0 * * 0
每月执行一次: 0 0 1 * *
每年执行一次: 0 0 1 1 *

其他例子
5 * * * * 指定每小时的第5分钟执行一次ls命令
30 5 * * * ls 指定每天的 5:30 执行ls命令
30 7 8 * * ls 指定每月8号的7:30分执行ls命令
30 5 8 6 * ls 指定每年的6月8日5:30执行ls命令
30 6 * * 0 ls 指定每星期日的6:30执行ls命令[注:0表示星期天,1表示星期1,以此类推,也可以用英文来表示,sun表示星期天,mon表示星期一等。]
30 3 10,20 * * ls 每月10号及20号的3:30执行ls命令[注:“,”用来连接多个不连续的时段]
25 8-11 * * * ls 每天8-11点的第25分钟执行ls命令[注:“-”用来连接连续的时段]
*/15 * * * * ls 每15分钟执行一次ls命令 [即每个小时的第0 15 30 45 60分钟执行ls命令 ]
30 6 */10 * * ls 每个月中,每隔10天6:30执行一次ls命令[即每月的1、11、21、31日是的6:30执行一次ls命令。

如果要实现 每隔十秒执行一次代码如下:

* * * * * /bin/date >> /home/hdp100/shell_script/test.txt
* * * * * sleep 10; /bin/date >> /home/hdp100/shell_script/test.txt
* * * * * sleep 20; /bin/date >> /home/hdp100/shell_script/test.txt
* * * * * sleep 30; /bin/date >> /home/hdp100/shell_script/test.txt
* * * * * sleep 40; /bin/date >> /home/hdp100/shell_script/test.txt
* * * * * sleep 50; /bin/date >> /home/hdp100/shell_script/test.txt
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值