1. 程式人生 > >Linux中的Crontab定時任務詳解

Linux中的Crontab定時任務詳解

crontab介紹

在日常的專案開發中,我們有時候會需要定時的執行一些人物,比如資料庫備份,或者你的專案中的某個指令碼需要定期定時的去執行等等。那麼這些需求都可以所使用linux中crontab定時任務來完成。
Crontab:

  • 用於設定週期性被執行的指令
  • 該命令讀取指令存放於crontab檔案中供後續讀取和執行
  • crond為其守護程序,一般在後臺默默執行,不間斷的檢查是否有預定的作業需要執行

命令格式:分 時 日 月 星期 <命令> <日誌>
圖例:
這裡寫圖片描述

例項

現在我們就拿一個實際的demo寫展示一下定時任務的編寫和使用。當然,這個前提是你會基礎的linux命令和基礎的shell指令碼編寫。定時任務這個本身就是linux裡面很基礎的東西。如果不是太熟悉的可以網上找點資料看看,大把大把的。。。

  • 編寫shell指令碼
    我就在我的伺服器上簡單的實現一下
//當前目錄位置是:/home/wwwroot/crontabtest/
//首先建立一個**test.sh**shell檔案
touch test.sh
//新增該檔案可執行許可權
chmod +x test.sh
//建立一個**test.php**php檔案

touch test.php
//新增該檔案可執行許可權
chmod +x test.php

touch log.log
//新增該檔案可執行,寫許可權,用來保持存日誌
chmod +wx log.log

touch test.txt
//新增該檔案可執行,寫許可權,用來儲存測試資料
chmod +wx test.txt //以上的修改許可權一夜可以合併操作 //使用vim 編寫shell指令碼 vim test.sh

test.sh:

#!/bin/bash
#設定一下時間,為後續的日誌記錄提供便利
date "+%Y-%m-%d %H:%M:%S"
#執行php指令碼檔案
php /home/wwwroot/crontabtest/test.php

test.php:

<?php
//目的往txt檔案中以追加的形式新增一個隨機數,我們簡單的測試一下即可
 $number = rand(1000,9999).'/';
 file_put_contents("/home/wwwroot/crontabtest/test.txt"
,$number,FILE_APPEND);

編寫定時任務:

//輸入crontab -e
crontab -e
//進入命令編寫檔案
//按照第一步的介紹編寫
//前面全是*號  代表 每分鐘每小時每日每月每週 都執行後面這個test.sh shell 指令碼  然後將日誌輸出到
//log.log日誌檔案中並且標準化輸出   2>&1  代表標準化輸出
* * * * * /home/wwwroot/crontabtest/test.sh >> /home/wwwroot/crontabtest/log.log 2>&1
//你在編寫的時候注意你的路徑和大小寫問題
//編寫完畢你可以保持存並退出,這時候定時任務已經啟動。可以使用如下命令檢視你的所有定時任務
crontab -u root -l

這個每過一分鐘的時候都會向test.txt檔案寫入一個隨機數,並且向log.log日誌檔案中新增一條記錄。目前我們的日誌沒有多餘資訊展示,你可能只會看到一個時間展示,當然這是成功的情況下,如果失敗,日誌檔案中就會記錄失敗的原因,所以日誌是很重要的 ,我們很多的排錯和資訊查詢都依賴日誌。如下:
test.txt和log.log:
這裡寫圖片描述
這裡寫圖片描述

總結

定時任務的使用還是比較靈活的,包括很多工你也可以直接在shell指令碼中編寫而不必再另寫一個php檔案,包括定時任務的執行時間的修改等等。
最後,注意:linux下嚴格區分大小寫哦。