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
有反應哦。