linux crontab命令可以實現定時履行任務,最小的履行周期是1分鐘
關于crontab的使用可以查看《Linux crontab定時履行任務 命令格式與詳細例子》
例:每天12點履行test.php,履行的輸出會追加到test.log文件
0 12 * * * php /Users/fdipzone/test.php >> /Users/fdipzone/test.log 2>&1
2>&1 表示把標準毛病輸出重定向到與標準輸出1致,即test.log
每天12點都履行1次,當天的輸出就會追加到test.log文件。如果運行了1段很長的時間(如1年),test.log文件的內容則會很大。 這樣不方便查看對應日期的輸出記錄。
因此我們需要1個方法,可以按不同時段寫入不同的日志文件,例如逐日,每周,每個月使用1個日志文件(具體根據不同的需求定義)這樣就能夠方便搜索。
例:每天12點履行,使用當天日期來命名重定向文件
0 12 * * * php /Users/fdipzone/test.php >> "/Users/fdipzone/$(date +"\%Y-\%m-\%d").log" 2>&1
2016-06-06 履行的,會追加入/Users/fdipzone/2016-06-06.log
2016-06-07 履行的,會追加入/Users/fdipzone/2016-06-07.log
…
這樣可以很方便找到對應日期的定時任務履行日志
如果每天創建的日志內容不多,我們可使用月份/周為日志命名。如果日志內容很多也能夠按小時來命名,以下提供不同時段的命名重定向文件實例。
使用月份命名
0 12 * * * php /Users/fdipzone/test.php >> "/Users/fdipzone/$(date +"\%Y-\%m").log" 2>&1
使用周命名
0 12 * * * php /Users/fdipzone/test.php >> "/Users/fdipzone/$(date +"\%Y-W\%W").log" 2>&1
使用小時命名
* * * * * php /Users/fdipzone/test.php >> "/Users/fdipzone/$(date +"\%Y-\%m-\%d_\%H").log" 2>&1