Crontab是Unix系统的基于时间的任务管理工具。该命令不同于传统的Unix命令,下面将一一介绍它的规则和用法。crontab或croncrontab或cron?刚接触crontab的同学可能会被这两个词弄糊涂。其实可以这样理解:crontab是cron服务的命令行工具,cron是在后台处理crontab传递任务的服务。文件格式crontab命令以固定时间格式使用,分别表示分、时、日、月、周命令范围0~59(*)0~23(*)1~31(*)1~12(*)0~7(*)在需要执行的命令中还有一些特殊字符有特殊含义:*表示随时接收。举个栗子:*12***表示无论是星期几还是星期几,都会在十二点执行指定的命令。常见的例子每分钟执行一次:*/1****or*****每五分钟执行一次:*/5****每小时执行一次:0****or0*/1***a执行一次day:00***一周执行一次:00**0一个月执行一次:001*0如何使用刚接触crontab命令的时候,我也在想这个命令怎么用的?crontab有两种使用方式:crontab-e:直接接受在标准输入(键盘)上键入的命令并将它们加载到crontab中。crontab文件:使用file作为crontab的任务列表文件,加载到crontab中。第一种方法没什么好说的,直接在终端添加crontab任务即可。简单说一下第二种方式(其实两者的核心是一样的)。要创建crontab文件,首先要创建一个文件,其内容包括功能描述、执行时间和执行任务。其中,前两个不一定是必须的,但是为了方便自己或者其他人以后快速知道任务是干什么的,#表示注释。例如,创建一个名为script_cron的crontab文件:#Executescript.phpscripteveryminute*****/usr/bin/php~/script.phpruncrontab为了提交刚刚创建的crontab文件,你可以把这个新的创建的文件的名称用作crontab命令的参数:$crontabscript_cron列出cron服务使用-l参数列出crontab文件:$crontab-l#每分钟执行script.php脚本*****/usr/bin/php~/script.php编辑cron服务$crontab-e删除cron服务$crontab-rFAQcrontab没有立即生效新建的cron任务不会立即执行,至少需要两分钟执行。如果想立即执行,可以重启crontab。//Ubuntu:$servicecronrestart//Centos$servicecrondrestartcrontab根本不执行。有时候你可能会遇到在命令行中可以直接执行的任务,但是定时任务根本不执行。这时候需要确认cron服务是否正常//Ubuntu:$servicecronstatus//Centos$servicecronstatus然后确认需要执行的任务是否包含路径。如果是这样,请使用全局路径。最后重启cron服务,一般这里可以正常执行,如果不行,尝试引入环境变量:0****。/等/配置文件;/usr/bin/php/var/www/script.phpcrontabNone执行权限需要注意的是crontab任务的调度。只有root和任务所有者有权限。如果要编辑/查看/删除其他用户的任务,可以使用以下命令:$crontab-u<用户名><选项>常用选项:-e:编辑任务-l:查看任务-r:删除任务视图crontab任务执行当定时任务在指定时间执行时,会同步输出类似的日志:$tail-f/var/log/syslogNov1912:47:01gigabitCRON[14521]:(root)CMD(/usr/bin/php/var/www/script.php)至此,可以确定任务调度正常。上面的方法确实有效,但是不太方便,那么有没有更好的方法呢?crontab默认没有任务执行日志,但是可以通过其他方式手动创建日志文件。0****。/等/配置文件;/usr/bin/php/var/www/script.php>>/var/log/cron.log2>&1在script.php脚本末尾添加一个输出,这样每次脚本执行时,输出将被重定向到cron.log日志文件。参考链接crontab的使用和例子19.crontab定时任务Linuxcrontab命令定时任务基本语法及操作教程-VPS/服务器自动化
