Ubuntu下用crontab 部署定時任務,ubuntucrontab部署

來源:互聯網
上載者:User

Ubuntu下用crontab 部署定時任務,ubuntucrontab部署

  用php做了一個網站,其中一個統計工能,需要每周定時用行。想看看有什麼方法,之前看別人的東西,一般有2中方式,一個是php內建的定時任務,一個是用系統

帶的,linux下的crontab和windows下的定時任務。

  之前用了php內建的定時任務工能,發現實現起來很簡單,中間也沒出現很多問題,同時做的時候對  ob_flush()  和 flush() 等函數不是很熟,後來又看了相關的一些文章,

對其中的東西有了深入的瞭解。但是後來發現php定時任務開啟後,貌似不能停止,不需要重啟伺服器才行。不能通過修改php檔案來解決。

  後來就打算用linux下的crontab來實現。這次用的是Ubuntu來做部署系統,nginx來做伺服器。此系統下內建crontab,所以不用自己安裝。

開啟crontab日誌

  crontab預設情況下是不執行開啟日子的,所以一開始寫完後,不能執行,想查看日誌,卻找不到。所以先開啟定時任務的日誌來查看

  修改rsyslog服務,將 /etc/rsyslog.d/50-default.conf  檔案中的 #cron.* 前的 # 刪掉;用以下命令重啟rsyslog服務:

service rsyslog restart;

  然後再重啟crontab服務:

service cron restart;

  網上很多人說開啟,停止或者重啟contab服務用命令 service crond restart,執行這個命令會報出 unrecognised service ,這裡吧 crond 改成 cron 就可以了。

  之後,在這個位置 /var/log/cron.log 就可以查看定時任務的檔案記錄檔了;

  下面這個命令還可以查看crontab的狀態

service cron status;

  查看運行時的記錄檔,如果在記錄檔中執行一條語句後出現:

  No MTA installed, discarding output
  則crontab執行指令碼時是不會直接錯誤的資訊輸出,而是會以郵件的形式發送到郵箱裡,需要郵件伺服器了,如果沒有安裝郵件伺服器,它就會報這個錯。

  可以在每條定時指令碼後面加入:

>/dev/null 2>&1

  即將所有資訊輸入到linux系統中的空裝置/dev/null中。

  即可解決No MTA installed, discarding output的問題。

 

寫定時任務

  通過如下命令,就可以開啟本使用者的定時檔案,檔案存放在 /var/spool/cron/crontabs 檔案夾下

並且以用的的名字命名的檔案

crontab -e

  可以通過以下命令列出某個使用者cron服務的詳細內容

crontab -l

  我先寫了個定時任務測試以下,用php寫了一個功能,每分鐘向資料庫中寫入一條資料,定時任務每分鐘執行url就可以

1 *    * * *   curl  servername/Home/Test/test   >/dev/null 2>&1

  curl也是Ubuntu內建的,不用另外安裝。此條命令單獨在命令列執行是可以的。

  在crontab中發現好像不能執行,後來發現每分鐘不能這樣寫,分鐘位要寫成  */1,才能執行,下面是從別人那拷貝過來的幾個命令,不過我都試過

每五分鐘執行  */5 * * * *每小時執行     0 * * * *每天執行        0 0 * * *每周執行       0 0 * * 0每月執行        0 0 1 * *每年執行       0 0 1 1 *

   在最終能用之前我還運行過以下命令,是給root賦許可權。但是在我最終能運行時,我不知道這條命令有沒有起作用。不過還是先寫上。運行後需要重啟crontab服務

crontab -u root /var/spool/cron/crontabs/root

  之前不能啟動並執行時候,看到很多人說不能運行是環境變數的問題,需要修改。不過我這次並沒有遇到。不過先記下來。以後可能會用到。

  我用的是root使用者寫的定時任務,並且看到他人寫的下面內容,下次試一下

  /etc/cron.deny 表示不能使用crontab 命令的使用者

  /etc/cron.allow 表示能使用crontab的使用者。

  如果兩個檔案同時存在,那麼/etc/cron.allow 優先。

  如果兩個檔案都不存在,那麼只有超級使用者可以安排作業。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.