crontab 定时工具(周期性执行的任务列表称为Cron Table),其中每个任务,被称为Cron Job。php
能够,每分钟执行,每小时执行,天天执行,每周执行,每个月执行。linux
1.查看任务数据库
jiqing@ubuntu:~/桌面$ sudo crontab -l no crontab for root
2.查看服务ubuntu
jiqing@ubuntu:~/桌面$ sudo service cron status cron start/running, process 1163 jiqing@ubuntu:~/桌面$ sudo service cron restart cron stop/waiting cron start/running, process 20296
jiqing@ubuntu:~/桌面$ sudo apt-get install cron 正在读取软件包列表... 完成 正在分析软件包的依赖关系树 正在读取状态信息... 完成 下列软件包是自动安装的而且如今不须要了: gstreamer0.10-plugins-ugly liba52-0.7.4 libdvdnav4 libdvdread4 libmad0 libmp3lame0 libmpeg2-4 libopencore-amrnb0 libopencore-amrwb0 libsidplay1 libtwolame0 libx264-142 linux-image-extra-4.4.0-31-generic Use 'apt-get autoremove' to remove them. 建议安装的软件包: checksecurity exim4 postfix mail-transport-agent 下列【新】软件包将被安装: cron 升级了 0 个软件包,新安装了 1 个软件包,要卸载 0 个软件包,有 7 个软件包未被升级。 须要下载 81.0 kB 的软件包。 解压缩后会消耗掉 301 kB 的额外空间。 获取:1 http://cn.archive.ubuntu.com/ubuntu/ trusty/main cron i386 3.0pl1-124ubuntu2 [81.0 kB] 下载 81.0 kB,耗时 1秒 (40.5 kB/s) 正在选中未选择的软件包 cron。 (正在读取数据库 ... 系统当前共安装有 269953 个文件和目录。) 正准备解包 .../cron_3.0pl1-124ubuntu2_i386.deb ... 正在解包 cron (3.0pl1-124ubuntu2) ... 正在处理用于 man-db (2.6.7.1-1ubuntu1) 的触发器 ... 正在处理用于 ureadahead (0.100.0-16) 的触发器 ... 正在设置 cron (3.0pl1-124ubuntu2) ... cron start/running, process 22657
> 是定向输出到文件,若是文件不存在,就建立文件;若是文件存在,就将其清空;通常咱们备份清理日志文件的时候,就是这种方法:先备份日志,再用`>`,将日志文件清空(文件大小变成0字节); >> 这个是将输出内容追加到目标文件中。若是文件不存在,就建立文件;若是文件存在,则将新的内容追加到那个文件的末尾,该文件中的原有内容不受影响。
crontab -e
# m h dom mon dow command */1 * * * * date >> ~/time.log
每分钟,将执行一次。将日期写入log中。dom
jiqing@ubuntu:~$ cat time.log 2018年 04月 17日 星期二 17:13:01 CST 2018年 04月 17日 星期二 17:14:01 CST 2018年 04月 17日 星期二 17:15:01 CST 2018年 04月 17日 星期二 17:16:01 CST 2018年 04月 17日 星期二 17:17:01 CST
前5个部分表示什么时候执行命令,最后一个部分表示执行的命令。每一个部分以空格分隔,除了最后一个部分(命令)能够在内部使用空格以外,其余部分都不能使用空格。前5个部分分别表明:分钟,小时,天,月,星期,每一个部分的取值范围以下:工具
分钟 0 - 59 小时 0 - 23 天 1 - 31 月 1 - 12 星期 0 - 6 0表示星期天
除了这些固定值外,还能够配合星号(*),逗号(,),和斜线(/)来表示一些其余的含义: 星号 表示任意值,好比在小时部分填写 * 表明任意小时(每小时) 逗号 能够容许在一个部分中填写多个值,好比在分钟部分填写 1,3 表示一分钟或三分钟 斜线 通常配合 * 使用,表明每隔多长时间,好比在小时部分填写 */2 表明每隔两分钟。因此 */1 和 * 没有区别,*/2 能够当作是能被2整除的任意值。
如下是一些例子(省略了命令部分):post
* * * * * # 每隔一分钟执行一次任务 0 * * * * # 每小时的0点执行一次任务,好比6:00,10:00 6,10 * 2 * * # 每月2号,每小时的6分和10分执行一次任务 */3,*/5 * * * * # 每隔3分钟或5分钟执行一次任务,好比10:03,10:05,10:06
jiqing@ubuntu:~$ tail -f time.log 2018年 04月 17日 星期二 17:18:01 CST 2018年 04月 17日 星期二 17:19:01 CST 2018年 04月 17日 星期二 17:20:01 CST 2018年 04月 17日 星期二 17:21:01 CST 2018年 04月 17日 星期二 17:22:01 CST 2018年 04月 17日 星期二 17:23:01 CST 2018年 04月 17日 星期二 17:24:01 CST 2018年 04月 17日 星期二 17:25:01 CST 2018年 04月 17日 星期二 17:26:01 CST 2018年 04月 17日 星期二 17:27:01 CST 2018年 04月 17日 星期二 17:28:01 CST
能够经过tail -f实时监控文本日志。rest
若在crontab中写了以下的一个任务: 0 6 * * * echo “Good morning.“//注意单纯echo,从屏幕上看不到任何输出,由于cron把任何输出都email到root的信箱了 能够把这个输出重定向到另一个标准输出文件中,好比说重定向输出到一个txt文件中 0 6 * * * echo “Good morning.” >> /tmp/test.txt
新建一个php任务。日志
*/1 * * * * php /home/wwwroot/default/test/test.php >> ~/phptime.log
php中的代码,code
<?php echo date('Y-m-d H:i:s')."\n"; ?>
jiqing@ubuntu:/home/wwwroot/default/test$ tail -f ~/phptime.log 2018-04-17 17:39:01 2018-04-17 17:40:01 2018-04-17 17:41:01 2018-04-17 17:42:01
有反应哦。