ubuntu下使用crontab定時器


crontab 定時工具(周期性執行的任務列表稱為Cron Table),其中每一個任務,被稱為Cron Job。

可以,每分鍾執行,每小時執行,每天執行,每周執行,每月執行。

檢查服務

1.查看任務

jiqing@ubuntu:~/桌面$ sudo crontab -l
no crontab for root

2.查看服務

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中。

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整除的任意值。

以下是一些例子(省略了命令部分):

* * * * *                  # 每隔一分鍾執行一次任務  
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實時監控文本日志。

若在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中的代碼,

<?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

有反應哦。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM