使用crontab定时执行脚本

cron服务是一个定时执行的服务,可以通过crontab 命令添加或者编辑需要定时执行的任务:

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

执行以上命令的时候,若遇到“crontab command not found”错误,这是因为软件包没有安装

crontab 要安装两个软件包:   
vixie-cron 及 crontabs
直接执行 
yum install vixie-cron
yum install crontabs(这句可能不需要,但是你也可试试)
即可解决.

在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)

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

  • *代表所有的取值范围内的数字
  • "/"代表每的意思,"/5"表示每5个单位
  • "-"代表从某个数字到某个数字
  • ","分开几个离散的数字

注:commands 注意以下几点

  • 要是存在文件,要写绝对路径
  • 即使是打印也不会显示在显示屏,在后台运行,最好重定向日志

实例1:

(写一个定时任务,每分钟往test.txt文件写入一个"good"字符串)

step1:写cron脚本文件,命名为mytest.cron。

使用touch命令创建两个文件,mytest.cron作为脚本文件,test.txt用来测试(作为日志打印输出文件)。

使用vi命令编辑mytest.cron文件。写入以下内容:

*/1 * * * * echo "good" >> /export/Domains/yy.embed.jd.com/server1/logs/test.txt

表示每分钟,执行一次打印命令,往test.txt文件里写入一个

step2:添加定时任务。执行命令

crontab mytest.cron

step3:"crontab -l" 查看定时任务是否成功或者检测/var/spool/cron下是否生成对应cron脚本

step4:"service crond status"

Crontab是一个很方便的在unix/linux系统上定时(循环)执行某个任务的程序
使用cron服务,用 service crond status 查看 cron服务状态,如果没有启动则 service crond start启动它,启动命令“service crond start”。

使用cat命令查看test.txt文件,结果:

实例2:

(本人公司测试环境磁盘较小,系统日志打印较多,时间一长,磁盘打满,应用挂掉。针对这种情况,写一个定时任务,定期清理测试环境的系统日志,避免日志打满的情况出现导致应用挂掉。)

主要日志文件如下:

step1:写cron脚本文件,命名为clearLogs.cron。

使用vi命令编辑clearLogs.cron文件。写入以下内容:

50 23 * * * for i in `find /export/Domains/yy.embed.jd.com/server1/logs/ -name "*.log"`; do cat /dev/null >$i; done
50 23 * * * for i in `find /export/Domains/yy.embed.jd.com/server1/logs/ -name "*.out"`; do cat /dev/null >$i; done
50 23 * * * for i in `find /export/Domains/worker.embeddedins.jd.local/server1/logs/ -name "*.log"`; do cat /dev/null >$i; done
50 23 * * * for i in `find /export/Domains/worker.embeddedins.jd.local/server1/logs/ -name "*.out"`; do cat /dev/null >$i; done

表示天的23点50分,执行4个清除命令,分别为清掉/export/Domains/yy.embed.jd.com/server1/logs目录下所有以log结尾的文件内容、清掉/export/Domains/yy.embed.jd.com/server1/logs目录下所有以out结尾的文件内容、清掉/export/Domains/worker.embeddedins.jd.local/server1/logs目录下所有以log结尾的文件内容、清掉/export/Domains/worker.embeddedins.jd.local/server1/logs目录下所有以out结尾的文件内容。

step2:添加定时任务。执行命令

crontab clearLogs.cron

step3:"crontab -l" 查看定时任务是否成功或者检测/var/spool/cron下是否生成对应cron脚本

以上便可定时清理磁盘日志文件。

实例2里一个文件中使用了多个定时、多个命令,使用crontab执行多个命令时,还有很多其他写法。比如只写一个定时,后面的命令写在一行,命令与命令之间用“;”分号隔开。例如实例2中的每一行命令,其实是3个命令写在一起。把上述12个命令全部写1行也是可以的。

linux下使用crontab定时执行脚本的更多相关文章

  1. Linux下的crontab定时执行任务命令详解

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

  2. (二)Linux下的crontab定时执行任务命令详解

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

  3. Linux下的crontab定时执行任务命令详解(参考:https://www.cnblogs.com/longjshz/p/5779215.html)

    在Linux中,周期执行的任务一般由cron这个守护进程来处理[ps -ef | grep cron].cron读取一个或多个配置文件,这些配置文件中包含了命令行以及调用时间. cron的配置文件成为 ...

  4. Linux下的crontab定时执行任务详解

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

  5. Linux下的crontab定时执行任务命令

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

  6. Linux下的crontab定时执行任务简要说明

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

  7. linux下使用crontab定时备份MYSQL数据库的方法:

    摘要 linux下使用crontab定时备份MYSQL数据库的方法: 只需按照下面3步做,一切都在你的掌控之下: 第一步:在服务器上配置备份目录代码: ------------------------ ...

  8. Linux下的crontab定时、执行任务命令详解 oracle 自动备份

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

  9. MySQL定时备份之使用Linux下的crontab定时备份实例

    这篇文章主要介绍了使用Linux下的crontab进行MySQL定时备份的例子,需要的朋友可以参考下   复制代码代码如下: ##################################### ...

随机推荐

  1. [poj3252]Round Numbers_数位dp

    Round Numbers poj3252 题目大意:求一段区间内Round Numbers的个数. 注释:如果一个数的二进制表示中0的个数不少于1的个数,我们就说这个数是Round Number.给 ...

  2. Be Better , Be Better

    Be Better! 这不是一道题,只是我的flag.初三寒假,一个本应该对着计算机翻天覆雨的假期,我在鬼班撸高中课...其实感触是从初中课得来的.有些事,以前我说是我不懂,现在我不说不是我不懂.Ju ...

  3. PTA常见错误

    1.最常犯的错误. 格式错误 在PTA程序检测中,输入输出要严格按照题目要求.输出的格式要完全按照题目要求来,该空格地方空格,该换行要换行.否则,就算你运行结果是对的,PTA还是提示你格式错误 比如下 ...

  4. equalsignorecase 和equals的区别

    equals方法来自于Object类equalsIgnoreCase方法来自String类equals对象参数是Object 用于比较两个对象是否相等equals在Object类中方法默然比较对象内存 ...

  5. bzoj千题计划274:bzoj3779: 重组病毒

    http://www.lydsy.com/JudgeOnline/problem.php?id=3779 有一棵树,初始每个节点有不同的颜色 操作1:根节点到x的路径上的点 染上一种没有出现过的颜色 ...

  6. 关于移动web教程免费发布

    各位老铁大家好,最近经历了太多太多,精力一直不能集中做自己愿意做的事情. 移动Web课程一开始设置收费10块,其实本意是让大家感觉有支出,就会相对珍惜好好学习,但是发现收费把大部分人挡在门外,现在恢复 ...

  7. php中(包括织梦cms)set_time_limit(0)不起作用的解决方法

    背景介绍: 在做织梦冗余图片清理的功能时, 由于冗余图片太多,导致每次清理时都会超时, 后来在网上搜索了各种文章,网上有如下的解决方法: set_time_limit(0) ini_set('max_ ...

  8. Browser Object Model

    BOM:浏览器提供的一系列对象 window对象是BOM最顶层对象 * 计时器setInterval(函数,时间)设置计时器 时间以毫秒为单位 clearInterval(timer) 暂停计时器se ...

  9. var 和 let 的异同?

    相同点 声明后未赋值表现一致 不同点 1.使用未声明的变量表现不同 2.变量作用范围不同 3.var可以声明多次 let只能声明一次 let的好处就是当我们在写代码的时候可以避免在不知道的情况下重复声 ...

  10. JAVA_SE基础——64.StringBuffer类 ①

     字符串特点:字符串是常量:它们的值在创建之后不能更改 字符串的内容一旦发生了变化,那么马上会创建一个新的对象. 注意:字符串的内容不适宜频繁修改,因为一旦修改马上就会创建一个新的对象. publ ...