🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
![](http://om4h63cja.bkt.clouddn.com/17-6-12/53522773.jpg) crontab命令常见于Unix和Linux的操作系统之中,用于设置周期性被执行的指令。该命令从标准输入设备读取指令,并将其存放于“crontab”文件中,以供之后读取和执行。通常,crontab储存的指令被守护进程激活。crond 常常在后台运行,每一分钟检查是否有预定的作业需要执行。这类作业一般称为cron jobs。 ## 安装 ~~~ # yum -y install vixie-cron # yum -y install crontabs # rpm -qf /var/spool/cron cronie-1.4.4-15.el6.x86_64 ~~~ 说明: vixie-cron 软件包是 cron 的主程序; crontabs 软件包是用来安装、卸装、或列举用来驱动 cron 守护进程的表格的程序。 ## 配置 cron 是 linux 的内置服务,但它不自动起来,可以用以下的方法启动、关闭这个服务: ~~~ service crond start //启动服务 service crond stop //关闭服务 service crond restart //重启服务 service crond reload //重新载入配置 service crond status //查看crontab服务状态 ~~~ 在CentOS系统中加入开机自动启动:`chkconfig --level 345 crond on` cron 的主配置文件是 /etc/crontab,它包括下面几行: ~~~ SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root HOME=/ # run-parts 01 * * * * root run-parts /etc/cron.hourly 02 4 * * * root run-parts /etc/cron.daily 22 4 * * 0 root run-parts /etc/cron.weekly 42 4 1 * * root run-parts /etc/cron.monthly ~~~ 前四行是用来配置 cron 任务运行环境的变量。 * SHELL 变量的值告诉系统要使用哪个 shell 环境(在这个例子里是 bash shell); * PATH 变量定义用来执行命令的路径。 * cron 任务的输出被邮寄给 MAILTO 变量定义的用户名。如果MAILTO 变量被定义为空白字符串(MAILTO=""),电子邮件就不会被寄出。 * HOME 变量可以用来设置在执行命令或脚本时使用的主目录。 ## 限制对 cron 的使用 /etc/cron.allow和/etc/cron.deny 文件被用来限制对 cron 的使用。 这两个使用控制文件的格式都是每行一个用户。 两个文件都不允许空格。 如果使用控制文件被修改了,cron 守护进程(crond)不必被重启。 使用控制文件在每次用户添加或删除一项 cron 任务时都会被读取。 无论使用控制文件中的规定如何,root 都总是可以使用 cron。 如果 cron.allow 文件存在,只有其中列出的用户才被允许使用 cron,并且 cron.deny 文件会被忽略。 如果 cron.allow 文件不存在,所有在 cron.deny 中列出的用户都被禁止使用 cron。 ## 常用命令 crontab -u 用户名 -l crontab -e制定计划任务 crontab -r删除计划任务 计划任务存储路径/var/spool/cron/ crontab 格式 ~~~ 分钟 (0-59) 小時 (0-23) 日期 (1-31) 月份 (1-12) 星期 (0-7)//0和7代表星期天 除了数字还有几个个特殊的符号就是"*"、"/"和"-"、",", *代表所有的取值范围内的数字, "/"代表每的意思,"*/5"表示每5个单位, "-"代表从某个数字到某个数字,","分开几个离散的数字。 ~~~ ![](http://om4h63cja.bkt.clouddn.com/17-6-12/8527582.jpg) ## 例子说明问题 每天早上6点 ~~~ 0 6 * * * echo "Good morning." >> /tmp/test.txt ~~~ //注意单纯echo,从屏幕上看不到任何输出,因为cron把任何输出都email到root的信箱了。 每两个小时 ~~~ 0 */2 * * * echo "Have a break now." >> /tmp/test.txt ~~~ 晚上11点到早上8点之间每两个小时,早上八点 ~~~ 0 23-7/2,8 * * * echo "Have a good dream:" >> /tmp/test.txt ~~~ 每个月的4号和每个礼拜的礼拜一到礼拜三的早上11点 ~~~ 0 11 4 * 1-3 command line ~~~ 1月1日早上4点 ~~~ 0 4 1 1 * command line ~~~