`
li200429
  • 浏览: 149638 次
  • 性别: Icon_minigender_2
  • 来自: 青岛
社区版块
存档分类
最新评论

crontab介绍 + 小示例 + crontab不执行的原因

阅读更多

转自:http://blog.csdn.net/ustcgy/article/details/5275096

1.Cron的启动与关闭

由于Cron是Linux的内置服务,可以用以下的方法启动.关闭这个服务:

/sbin/service crond start           //启动服务
/sbin/service crond stop            //关闭服务
/sbin/service crond restart        //重启服务
/sbin/service crond reload         //重新载入配置

2.Cron配置文件

2.1全局配置文件

crontab在/etc目录下面存在cron.hourly,cron.daily,cron.weekly,cron.monthly,cron.d五个目录和crontab,cron.deny二个文件.

cron.daily是每天执行一次的job,cron.weekly是每个星期执行一次的job.cron.monthly是每月执行一次的job,cron.hourly是每个小时执行一次的job.cron.d是系统自动定期需要做的任务,但是又不是按小时,按天,按星期,按月来执行的,那么就放在这个目录下面.

/etc/crontab文件一般如下:

01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly

我们可在此文件中添加自己需要的cron job.

/etc/cron.deny文件就是用于控制不让哪些用户使用Crontab的功能.

2.2用户配置文件

每个用户都有自己的cron配置文件,通过crontab -e 就可以编辑,一般情况下我们编辑好用户的cron配置文件保存退出后,系统会自动就存放于/var/spool/cron/目录中,文件以用户名命名.

linux的cron服务是每隔一分钟去读取一次/var/spool/cron,/etc/crontab,/etc/cron.d下面所有的内容.

3.Cron命令格式

crontab [ -u user ] 文件 
crontab [ -u user ] { -l | -r | -e }

-u:指定某一用户

-e:执行文字编辑器来设定用户(当前用户或指定用户)时程表,内定的文字编辑器是vi.
-r:删除用户时程表.
-l:列出用户时程表.

4.Cron文件格式

*  *  *  *  *  command
分 时 日 月 周   命令

第1列表示分钟1~59, 每分钟用*或者 */1表示
第2列表示小时1~23(0表示0点)
第3列表示日期1~31
第4列表示月份1~12
第5列标识号星期0~6(0表示星期天)
第6列要运行的命令

5.Cron文件使用说明

5.1 一般情况

当f1 为 * 时表示每分钟都要执行 program,f2 为 * 时表示每小时都要执行程序,其余类推. 

* * * * * /bin/usershell  每天每分钟执行一次/bin/usershell
当f1 为 a-b 时表示从第 a 分钟到第 b 分钟这段时间内要执行,f2 为 a-b 时表示从第 a 到第 b 小时都要执行,其余类推.

0-12 * * * * /bin/usershell  每天每小时从0到12分钟每分钟执行一次/bin/usershell
当f1 为 */n 时表示每 n 分钟个时间间隔执行一次,f2 为 */n 表示每 n 小时个时间间隔执行一次,其余类推.

* */2 * * * /bin/usershell  每天每2小时执行一次/bin/usershell
当f1 为 a, b, c,... 时表示第 a, b, c,... 分钟要执行,f2 为 a, b, c,... 时表示第 a, b, c...个小时要执行,其余类推.

* 1,3,5,7 * * * /bin/usershell  每天每逢1,3,4,7点执行一次/bin/usershell

5.2. 冲突逻辑

日期可以用月限定,也可以用“星期”指定,如果两个段有冲突,那么,第六段的命令将在匹配任何一个的情况下都运行,比如

"30 4 1,15 * 5",将在每月的1号和15号加每个周五,上午4:30运行.

5.3. 符号"%"

"%"在Cron文件中,有"结束命令行","换行","重定向"的作用,假如不需要"%"的特殊作用,需要使用转义符转义.

5.4. @reboot

这个不需要理解,为了达到在开机后运行,且只运行一次的目的.除了这个,也无法通过前五段的设置来实现.

@annually也是这个功能.

至于@yearly,@monthly等等其实都可以用上面的五段来设置.

 

然后我自己写了一个小例子做了下测试:

使用crontab -e进行编辑,内容为:

*/2 * * * * echo "i am crontab" >> /home/zhang/hello

这样隔两分钟就会往hello这个文件里写i am crontab


我自己写了一个脚本task.sh,直接运行task.sh时可以运行,可是加到crontab里就有运行了,后来我查看了网上的解决方法,终于解决了,先来看一下我原来写的task.sh脚本吧:

#!/bin/sh

java -jar offergateway.biz.offer-1.0-SNAPSHOT.jar


crontab定时任务的写法为:

* * * * *  /task.sh


后来我查了网上说要运行crontab,必须使用绝对路径,然后我把路径都改成绝对路径了。

在crontab的执行环境变量中,没有相应用户设置的环境变量,你需要手动设置一下环境变量,才能让它生效。于是我把上面的脚本改成:

#!/bin/sh

. /etc/profile

java -jar /home/zhang/offergateway.biz.offer-1.0-SNAPSHOT.jar


crontab也改成绝对路径:

* * * * *  sh /home/zhang/task.sh

哈哈,成功了~~happy~~

分享到:
评论

相关推荐

    crontab命令格式与例子

    crontab命令格式与例子,crontab file

    crontab定时任务不执行的原因分析与解决方法

    主要给大家介绍了关于crontab定时任务不执行的原因分析与解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

    脚本自动添加crontab示例

    主要介绍了脚本自动添加crontab示例,需要的朋友可以参考下

    unix crontab的时间段任务统计

    rar中包含两个文件,一个是calCrontab.sh统计脚本,一个是crontab_l示例文件。使用步骤如下: 在命令行依次执行: crontab -l > crontab_l sh ./calCrontab.sh 接下来会提示输入年月日时分,请按照数字不间隔...

    crontab执行结果未通过发送mail通知用户的方法

    主要给大家介绍了关于crontab执行结果未通过发送mail通知用户的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用linux系统具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧

    基于PHP的定时任务管理器Zebra-Crontab.zip

    基于以上几点原因,我们迫切的需要一个可以集中化管理的、可配置的定时任务管理器 但自己开发一套分布式的定时任务系统何其复杂,所以作者采用crontab服务做辅助,使用php实现对定时任务的配置管理 使用php管理...

    crontab实现每隔多少天执行一次脚本的两种方法

    如果是每隔多少小时,多少分运行一次程序,在crontab中可能比较好实现一些,下面是一些示例及crontab的格式说明: 具体示例: # 下午6点到早上6点,每隔15分钟执行一次脚本 0,15,30,45 18-06 * * * /bin/bash $HOME...

    crontab执行时间与系统时间不一致问题解决

    主要给大家介绍了关于crontab执行时间与系统时间不一致问题的解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

    Linux crontab 命令格式与详细示例(推荐)

    主要介绍了Linux crontab 命令格式与详细示例(推荐),需要的朋友可以参考下

    django-crontab实现服务端的定时任务的示例代码

    主要介绍了django-crontab实现服务端的定时任务的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

    Linux远程批量工具mooon_ssh和mooon_upload使用示例

    使用示例3:批量查看crontab mooon_ssh -c='crontab -l' 使用示例4:批量清空crontab mooon_ssh -c='rm -f /tmp/crontab.empty;touch /tmp/crontab.empty' mooon_ssh -c='crontab /tmp/crontab.emtpy' 使用示例5:...

    django-crontab 定时执行任务方法的实现

    主要介绍了django-crontab 定时执行任务方法的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

    使用django-crontab实现定时任务的示例

    今天打算在自己的 Django 应用中添加一个定时任务来定时执行一些定期检查的功能,因此想到了使用 django-crontab 插件可以满足我的需求,下面就是这个插件的使用方法。 首先使用pip安装 django-crontab 插件 pip ...

    Crontab:本地php crontab管理

    使用示例使用安装它或简单地将文件包含在某处: require("crontab/src/Crontab/Crontab.php"); 附加两个新作业并将它们设置为每分钟运行一次: $ cron = new \ Crontab \ Crontab (); $ cron -> setMinute ( "*" ); ...

    chkcrontab:用于检查系统crontab文件(通常为etccrontab和etccron.d)的错误和常见错误的工具

    要查看错误的crontab的示例输出,请运行以下命令: ./chkcrontab ./tests/test_crontab 有关如何禁用警告和错误的信息,请参见./tests/test_crontab.disable crontab。 输出说明 chkcrontab的输出在 Wiki页面上...

    Linux中crontab输出重定向不生效问题的解决方法

    crontab命令相信大家都不陌生,下面这篇文章主要给大家介绍了关于Linux中crontab输出重定向不生效问题的解决方法,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧

    cronTab-crx插件

    cronTab是Chrome扩展程序,可在指定时间在新标签页中打开指定的URL。 格式:分钟(0-59)小时(0-23)星期(0-6)URL别名:{sun:0,mon:1,tue:2,wed:3,thu:4,fri:5,sat: 6}表达式:*所有值,单独的值-...

Global site tag (gtag.js) - Google Analytics