http://yaksayoo.blog.51cto.com/510938/162062linux
Linux计划任务工具cron用法详解
linux下大名鼎鼎的计划任务工具crontab的使用介绍baidu、google上多得让人眼花缭乱,本着“天下文章一大抄”的觉悟,加上本人平常工做中总结的使用经验,索性推出这篇笔记式文章,以供遗忘时翻阅之用。
cron是linux系统下一个自动执行指定任务的程序,即包含“时间”、“路径”、“自动执行脚本”等要素,例如我想经过自动执行脚本“newcopy.sh”在凌晨4点整将/usr/local/下的“new”目录复制到/home下的“superman”目录。
cron程序在安装系统后通常会自动随系统启动,无需每次人手启动,若无心中将其自启动取消了,能够经过ntsysv或chkconfig将其添加到系统自启动列表中,以下:
#ntsysv
在自启动列表中选中crond便可服务器
1、cron服务介绍
cron把命令行保存在/etc/crontab文件里,每一个系统用户若是设置了本身的cron,那都会在/var/spool/cron下面有对应用户名的crontab。不管编写/var/spool/cron目录内的文件仍是/etc/crontab文件,都能让cron准确无误地执行安排的任务,区别是/var/spool/cron下各系统用户的crontab文件是对应用户级别的的任务配置,而/var/crontab文件则是对应系统级别的任务配置。cron服务器每分钟读取一次/var/crontab/cron目录内的全部文件和/etc/crontab文件。
2、使用cron服务执行计划任务
#service crond start/restart/stop
启动/重启/关闭cron服务
#crontab -l
浏览当前用户的crontab,即浏览已存在的计划任务列表
#crontab -e
编辑当前用户crontab,如以前从未编辑过crontab文件,那么crontab是一个空白文件,咱们能够彻底手工编写咱们所须要的计划任务列表,下面详细介绍计划任务列表的写法。
如下是几个例子:
1)9 9 * * * /usr/local/bin/cvsb
2)3 3 * * 0 /usr/local/bin/qbbak
3)* */6 * * * /usr/local/bin/esbbak
4)20,30 * * * /usr/local/bin/esbak
5)* 23 * * 2-5 /usr/local/bin/esbbak
六个字段对应的含义以下:
9 9 * * *
分钟 小时 日期 月份 星期
1)表示天天早上9点9分执行目录/usr/local/bin/中的cvsb文件
2)表示每周日凌晨3时3分执行目录/usr/local/bin中的qbbak文件
3)表示每6小时执行一次,执行时间从第一次执行起计算,固然也能够自定义执行时间,好比0 */6 * * *那程序就会在整点执行
4)表示在每小时20分和30分时执行
5)表示在星期二到星期五天天的23点执行
上面简单介绍了cron的一些基本用法,这个东东的时间组合可不是通常的强~能够复杂到你没法想象,咱们只要掌握少量基本就能够知足平常需求了。
3、cron进阶使用
1.避免cron产生垃圾文件
细心的朋友可能会发现系统/var/spool/clientmqueue/目录下每每存有大量文件,缘由是系统中有用户开启了cron,而cron中执行的程序有输出内容,输出内容会以邮件形式发给cron的用户,而sendmail(系统自带的邮件服务器)没有启动因此就产生了这些文件。
这时可使用输出重定向,即在计划任务后加上> /dev/null 2>&1
例:
9 9 * * * /usr/local/bin/cvsb > /dev/null 2>&1
2>&1:把错误重定向到输出要送到的地方。
把命令的执行结果重定向到/dev/null,即把产生的错误抛弃。
2.一种常常碰到的状况,须要执行的文件没问题,但经过cron就是死活不能正确执行,这时咱们能够经过输出重定向将cron的执行过程输出到一个文件,经过分析执行过程来寻找错误的缘由
例:
9 9 * * * /usr/local/bin/cvsb > /var/log/crontab_log 2>&1
上例将cron的执行过程输出到一个文本文件crontab_log,这个文件能够随便手动建一个,放在哪都行,重定向目录写对就Ok。工具