Crontab

Posted Weblog

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Crontab相关的知识,希望对你有一定的参考价值。

crontab 定时执行 任务

格式:
  * * * * * 
分别对应表示: 分钟(
0-59) 小时(0-23) 日(1-31) 月份(1-12) 星期(0-7
星号(
*):代表所有可能的值,例如month字段如果是星号,则表示在满足其它字段的制约条件后每月都执行该命令操作。 逗号(,):可以用逗号隔开的值指定一个列表范围,例如,“1,2,5,7,8,9” 中杠(-):可以用整数之间的中杠表示一个整数范围,例如“2-6”表示“2,3,4,5,6” 正斜线(/):可以用正斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次。 同时正斜线可以和星号一起使用, 例如*/5,第一个位置就是每隔5秒,如果用在minute字段,表示每多少分钟。
示例:
  每五分钟执行 */5 * * * *
  每小时执行 0 * * * *
  每天执行 0 0 * * *
  每周执行 0 0 * * 0
  每月执行 0 0 1 * *
  每年执行 0 0 1 1 *

crontab 问题:

1、crontab中的输出配置:
    crontab中经常配置运行脚本输出为:>/dev/null 2>&1,来避免crontab运行中有内容输出。

2、shell命令的结果可以通过> 的形式来定义输出;
    /dev/null 代表空设备文件  
    
    > 代表重定向到哪里,例如:echo "test" > test.txt 
    
    1 表示stdout标准输出,系统默认值是1,所以">/dev/null"等同于"1>/dev/null"
    
    2 表示stderr标准错误
     
    & 表示等同于的意思,2>&1,表示2的输出重定向等同于1 
    
3、重定向输出语句的含义:
    1>/dev/null 
        表示标准输出重定向到空设备文件,也就是不输出任何信息到终端,不显示任何信息。
    2>&1         表示标准错误输出重定向等同于标准输出,因为之前标准输出已经重定向到了空设备文件,所以标准错误输出也重定向到空设备文件。
    
4、crontab 中 % 是表示换行,创建时间命令必须写成 \% 
    date +%Y%m%d 
    要写成:
    date +\%Y\%m\%d

5、环境变量问题导致crontab 任务执行不了 :
    加入环境变量
0 * * * * ./etc/profile;/bin/sh java.sh
        
6、crontab 的日志位置一般位于/var/log/cron,利用下面的语句即可查看日志。
    tail -f /var/log/cron

环境变量延伸:

/etc/profile
   /etc/bashrc
  .bash_profile
  .bashrc
用户在登陆Linux操作系统的时候,
"/etc/profile", "~/.bash_profile" 等配置文件会被自动执行。 执行过程 -- 首先启动 "/etc/profile", 然后启动用户目录下的 "~/.bash_profile", 如果"~/.bash_login""~/.profile" 文件存在的时候也会在执行 "~/.bash_profile" 后被依次调用。 /etc/profile:此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行,并从/etc/profile.d目录的设置文件中搜集shell的设置; /etc/bashrc:为每一个运行bash shell的用户执行此文件,当bash shell被打开时,该文件被读取; ~/.bash_profile:每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次!默认情况下,他设置一些环境变量,执行用户的.bashrc文件, ~/.bashrc:该文件包含专用于你的bash shell的bash信息,当登录时及每次打开新的shell时,该文件被读取; ~/.bash_logout:当每次退出系统(退出bash shell)时,执行该文件; /etc/profile是全局性的功能,其中设置的变量作用于所有用户; ~/.bash_profile中设置的变量能继承/etc/profile中的变量并作用于用户; ~/.bash_profile 是交互式、login 方式进入 bash 运行的; ~/.bashrc 是交互式 non-login 方式进入 bash 运行的;

 

以上是关于Crontab的主要内容,如果未能解决你的问题,请参考以下文章

利用crontab自动更新SVN代码

crontab每秒执行URL接口

linux crontab定时任务调用CI框架PHP代码

linux定时执行php代码-定时计划crontab

django-crontab定时任务

crontab Linux下 crontab 命令的用法:sudo crontab -?