Linux下使用crontab设置定时任务

开发和维护项目的时候,我们经常需要定时去执行某个任务,比如定时跑一个脚本或者定时备份数据等。

一.crontab安装
执行一下 crontab -l 命令查看 cron服务状态,若遇到“crontab command not found”错误,这是因为软件包没有安装。
一般情况下linux系统会自带crontab及crond。如果没有安装,请使用以下指令安装:

yum install vixie-cron           
yum install crontabs 

(PS:Ubuntu操作系统下请使用apt-get)


二.rontab服务启动与停止常用命令:

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

三.crontab任务管理命令

crontab [-u user] file
crontab [-u user] [ -e | -l | -r ]

-u user:用来设定某个用户的crontab服务,例如,“-u apache”表示设定apache用户的crontab服务,此参数一般有root用户来运行。
file:file是命令文件的名字,表示将file做为crontab的任务列表文件并载入crontab。如果在命令行中没有指定这个文件,crontab命令将接受标准输入(键盘)上键入的命令,并将它们载入crontab。
-e:编辑某个用户的crontab文件内容。如果不指定用户,则表示编辑当前用户的crontab文件。
-l:显示某个用户的crontab文件内容,如果不指定用户,则表示显示当前用户的crontab文件内容。
-r:从/var/spool/cron目录中删除某个用户的crontab文件,如果不指定用户,则默认删除当前用户的crontab文件。
-i:在删除用户的crontab文件时给确认提示。

如:

crontab –e : 修改 crontab 文件,如果文件不存在会自动创建。 
crontab –l : 显示 crontab 文件。 
crontab -r : 删除 crontab 文件。

四.设置定时任务
  (1)crontab文件中的行由6个字段组成,不同字段间用空格分割。前5个字段指定命令要运行的时间,最后一栏代表要执行的命令,格式如下:

minute   hour   day   month   week   command     [按顺序分别是:分钟 小时 日期 月份 星期]

    分钟(0-59)
    小时(0-28)
    日期(1-31)
    月份(1-12)
    星期(0-6,其中0代表星期日)

第六个字段是一个要在适当时间执行的命令(注意:当使用crontab运行shell脚本时,要由用户来给出脚本的绝对路径)

  (2)除了数字还有几个特殊的符号:"*"、"/"和"-"、","

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

  (3)几个常用例子:

每五分钟执行一次: */5 * * * *
每小时执行一次 : 0 * * * *
每天执行一次: 0 0 * * *
每周执行一次: 0 0 * * 0
每月执行一次: 0 0 1 * *
每年执行一次: 0 0 1 1 *

  (4)特殊例子

30 21 * * * /apps/bin/cleanup.sh          //表示每晚的21:30 运行/apps/bin/目录下的cleanup.sh脚本。
45 4 1,10,22 * * /apps/bin/cleanup.sh     //表示每月1,10,22日的4:45 运行/apps/bin/目录下的cleanup.sh脚本。
10 1 * * 6,0 /apps/bin/cleanup.sh         //表示每周六、周日的1:10 运行/apps/bin/目录下的cleanup.sh脚本。
0,30 18-23 * * * /apps/bin/cleanup.sh     //表示在每天18:00至23:00之间每隔30分钟 运行/apps/bin/目录下的cleanup.sh脚本。
0 23 * * 6 /apps/bin/cleanup.sh           //表示每星期六的23:00 运行/apps/bin/目录下的cleanup.sh脚本。

四.实例
 (1)写一个定时任务,每分钟往test.txt文件写入一个"hello world"字符串
 a.创建两个文件(比如先在/usr目录下创建个cron_task文件夹,专门存放定时任务文件,以下命令均在此文件夹下执行)

touch script.sh    //脚本文件,后缀可以随便定义,比如(script script.cron script.sh均可)
touch test.txt     //目标文件

 b.使用vi命令编辑script.sh文件。写入以下内容:

 */1 * * * * echo "hello world" >> /usr/cron_task/test.txt


 c.添加定时任务。将刚创建的定时任务脚本添加到定时任务中,执行命令

crontab script.sh


 d.查看结果

service crond status    //查看定时任务服务执行情况
cat test.txt            //查看目标文件的内容(是否定时写入了"hello world"字符串)


 (2)每间隔5分钟,向某个地址发送请求,”-O temp.txt”表示输出会发送到临时文件

*/5 * * * * /usr/bin/curl -O temp.txt http://host/test.php

 

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值