Linux计划任务:听抚琴煮酒分享Crontab使用心得(1)


51CTO独家特稿】你用过Crontab吗?你对Crontab了解吗?你知道如何以秒为级别执行任务吗?你知道怎样让Crontab执行PHP脚本吗?你知道Crontab的一些特别的用途吗?在本文中,抚琴煮酒将向大家介绍自己多年来使用Crontab的一些心得。

作者:抚琴煮酒(Andrew.Yu)

职业:Linux/unix系统工程师、项目实施工程师

服务器系统:64Bit CentOS 5.5

虽然关于 Crontab 的介绍到处都是,详细读了一遍这个词条,收获还是有的。Crontab 这个名字来自 “chronos”,一个古希腊语, “时间”的意思以下用法在生产环境下的服务器非常有用,抚琴煮酒强烈推荐);关于crontab的基础用法和语法我就不推荐了,google和51cto上到处都是,我说的是一些进阶技巧,里面也有可能是不知道的;Shell脚本均取自于线上服务器。我安装的服务器一般都是采用最小化安装,安装以后就发现启动cron的管理服务crond默认就是启动的,

service crond status
crond (pid 3444) is running...

手快的小伙可用chkconfig crond on让其在level3和level5自动运行。

cron把命令行保存在crontabcron table)文件里,这个文件通常在 /etc 目录下。每个系统用户都可以有自己的crontab在 /var/spool/cron/ 下)。要查看当前用户的crontab,输入

crontab -l

要编辑crontab,输入

crontab -e

要删除crontab,输入

crontab -r

如当前是root身份,要查看/编辑/删除/某用户的crontab,只需在相应的命令后加上 -u USERNAME如 crontab -e -u USERNAME)即可。crontab文件的默认编辑器是vi,可以输入

export VISUAL='editor' 

更改默认编辑器。

cron服务每分钟不仅要读一次 /var/spool/cron 目录内的所有文件,还需要读一次 /etc/crontab 文件。配置这个文件也能让cron执行任务。使用crontab命令是对用户级任务的配置,而编辑 /etc/crontab 文件是对系统级任务的配置。

抚琴煮酒定义的crontab语法比较好记,推荐记忆学习

星期 用户 带绝对路径的命令 脚本或PHP详细路径

细心的你发现没有,crontab最小执行时间为分钟,如果要求任务是以秒为级别的怎么办,其实是有办法的,我等会以实例说明下;服务器我建议也以/etc/crontab为主,它更方便控制用户管理;建议服务器上的计划任务时间错开,不要同时并行任务,不然会在某时间段造成系统负载过大,搞得你的Nagios狂发报警邮件。


相关内容