0,15,30,45 18-06 * * * /bin/echo `aaa` > /dev/tty1

#每天的6点到18点的0,15,30,45分时,把时间覆盖输出到终端tty1上,如果是追加,那就是

/bin/echo `date` >> /dev/tty1。 (不建议追加,因为这个操作的好处就是不断的输出时间,然后作为一个运行的凭据,如果出现了某个终端,我们可以在可以挽救的时间误差内记录下有什么意外情况。)

在date这个命令的两边,有一个括号内的标点( `),笔记本键盘的数字键1左边那个,英文字符下就ok。


30 3 1,7,14,21,26 * * /bin/find / -name "aaa" -exec rm {} \;

#每个月的1,7,14,21,26号的3:30分把/下查找到的名字是aaa的内容(因为这里没有指定type就是file。或许有的是目录呢。)给删除掉。

{}就是前面找到的文件名称
\; 的原因是因为find命令要以一个”;“作结尾,但为了不让”;“被shell误解所以加了一个转义字符"\"


每五分钟执行  */5 * * * *

每小时执行     0 * * * *

每天执行        0 0 * * *

每周执行       0 0 * * 0

每月执行        0 0 1 * *

每年执行       0 0 1 1 *



图片为转载内容点我

wKioL1YPuHWD1as4AAGNuiyKXbU133.jpg

对于以上个字段,可以填写以下内容。

星号(*):代表所有可能的值,例如month字段如果是星号,则表示在满足其它字段的制约条件后每月都执行该命令操作。

逗号(,):可以用逗号隔开的值指定一个列表范围,例如,“1,5,7,8,”

中杠(-):可以用整数之间的中杠表示一个整数范围,例如“1-6”表示“1,2,3,4,5,6”

正斜线(/):可以用正斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次(或者*/2)。同时正斜线可以和星号一起使用,例如*/10,如果用在minute字段,表示每十分钟执行一次。

文件:

/etc/cron.deny

说明:

该文件中所列用户不允许使用crontab命令

文件:

/etc/cron.allow

说明:

该文件中所列用户允许使用crontab命令

文件:

/var/spool/cron/

说明:

所有用户crontab文件存放的目录,以用户名命名

crontab -l    #列出计划任务的文件。(建议大家修改文件的时候注释另起一行写,否则配置文件会出现不生效的情况。这里只是为了方便查看


crontab -l > $HOME/mycron     #将自己的crontab文件在home下做一下备份,避免丢失或者误操作后无法恢复。

crontab -e    #编辑计划任务。如果任务没有执行,就把/var/spool/cron/<username>下的计划任务粘到/etc/crontab中,有时候会出现计划任务有的不执行。

crontab -r    #删除计划任务的文件。

如果出现了误删,可以将备份了的crontab文件cp到/var/spool/cron/<username>(username必须是你指定的用户名,你希望发生操作的用户。如果你希望root用户产生这个计划任务,那么username一定是root了。)

或者crontab <filename>   这个filenmae是home下那个文件的名字。

/sbin/service crond reload     #重新加载crontab的配置,并不是重启服务,只是重新加载。


举个例子:

    

每月的4号与每周一到周三的11点重启smb 

命令:

0 11 4 * mon-wed /etc/init.d/smb restart


一月一号的4点重启smb 

命令:

0 4 1 jan * /etc/init.d/smb restart

    

每小时执行/etc/cron.hourly目录内的脚本

命令:

01   *   *   *   *     root run-parts /etc/cron.hourly    #root run-parts,执行指定目录下所有脚本。如果执行单个脚本的话,就去掉root run-parts,单独写脚本的名字。


 注意环境变量问题,文件路径一定是绝对路径,脚本运行一定前面就写好运行的环境变量。

0 * * * * . /etc/profile;/bin/sh /var/www/java/audit_no_count/bin/restart_audit.sh    #此处直接加入了环境变量。

另外,如果这个脚本是其他变量,把/bin/sh改掉就ok

由于一些业务操作时,一定会给当前用户发邮件,提示You have mail in /var/spool/mail/root之类的。时间长了占据大量空间。

解决办法:0 */1 * * * /usr/local/aaa reload >/dev/null 2>&1

#“/dev/null 2>&1”表示先将标准输出重定向到/dev/null,然后将标准错误重定向到标准输出,由于标准输出已经重定向到了/dev/null,因此标准错误也会重定向到/dev/null,这样日志输出问题就解决了。


如果要定义一个定时重启系统的任务,就必须将任务放到/etc/crontab文件,即使在root用户下创建一个定时重启系统的任务也是无效的。


新创建的cron job,不会马上执行,至少要过2分钟才执行。如果service crond reload则马上执行。

当crontab突然失效时,可以尝试/etc/init.d/crond restart解决问题。或者查看日志看某个job有没有执行/报错tail -f /var/log/cron。

千万别乱运行crontab -r。它从Crontab目录(/var/spool/cron)中删除用户的Crontab文件。删除了该用户的所有crontab都没了(这就是前面重点讲的一定要备份crontab -l > $HOME/mycron )。

在crontab中%是有特殊含义的,表示换行的意思。如果要用的话必须进行转义\%,如经常用的date ‘+%Y%m%d’在crontab里是不会执行的,应该换成date ‘+\%Y\%m\%d’。  

 \  的作用如同前面提到的/bin/find / -name "aaa" -exec rm {} \;    #给; 这个字符转义,避免冲突。 ;的本义则是给/bin/find / -name "aaa" -exec rm {}这个命令一个结尾。