1. 程式人生 > >Linux crontab定時任務的使用

Linux crontab定時任務的使用

crontab是Unix和Linux用於設定週期性被執行的軟體包,伺服器上很多系統任務都會週期性執行,比如重啟某個伺服器,定期清理日誌等。這就可以使用crontab。將任務註冊到cron程序檢視的配置檔案中,這樣cron週期性地檢視這些配置檔案時,將會執行設定好的定時任務。在實際開發和部署中,大部分程式都不需要定時自維護,只需要寫好自己的業務邏輯,通過crond這個工業級程式排程即可。

cron

cron是一個系統Daemon程序,一般掛在init下。筆者的kali2中cron這個程序就是掛在init下。這個程序主要工作是定期檢查使用者註冊的任務資訊,並呼叫相應的任務執行。所以當用戶新加入了定時任務後,也不需要重啟此程序,cron會自動檢測和維護一個作業列表。

crontab

這是一個cron註冊資訊的工具。cron不提倡直接編輯註冊資訊檔案,使用這個crontab可以比較容易的完成註冊工作。注意,這個工具是針對各個使用者的,並非針對系統管理員,對於系統管理員,則可以直接編輯/etc/crontab檔案進行任務配置,作系統級配置。

簡單使用

假設如下命令希望每天每隔一分鐘執行一次:

date >> /var/log/date_testing
則我們可以使用crontab來註冊這一任務
crontab -e
首次開啟可能會需要你選擇預設的編輯器,自己選擇即可,我選擇的vim basic。之後就可以開始寫上配置資訊:
* * * * * date >> /var/log/date_testing

上例五個星號代表執行時間,分別是 :分 時 日 月  每週的日。星號代表任意值,也就是說,任意年,任意月,任意時,任意分,任意日,都執行後接的命令。關於時間格式,下文講解。儲存檔案退出後,使用如下命令將會看到剛才註冊的任務:
crontab -l
這樣,檢視日誌檔案/var/log/date_testing即可看到每分鐘執行的輸出。注意:在一般情況下,若沒有設定命令輸出重定向(date是有輸出的,輸出到stdout),則以郵件的形式傳送到執行的使用者信箱。久而久之這些資訊會非常大,可能需要人工處理。所以妥善管理任務程式的輸出是比較好的選擇

時間格式
上文例子中提到了任務註冊的時間格式。以下是具體的時間格式講解。

欄位 值範圍
minute 0-59
hour 0-23
day of month 0-31
month 1-12或name
day of week 0-7或name

除了具體值,指定在具體某一時刻(如分欄位的6代表每小時第6分鐘,月欄位的3代表每年的3月),還可以使用萬用字元和其他描述符號。

*代表取任意值,如在分欄位上標示任意分鐘都會執行,每一分鐘;在月欄位上表示每一月都會執行。

-代表取某個範圍(短橫線,減號)。如在時欄位上取值1-18表示每天1時到18時,這期間每個小時。分欄位上的5-10表示每小時的第五分鐘到第十分鐘,這期間每分鐘。

,代表具體值列舉(逗號)。比如分欄位上的2,3,4,8表示每小時中第二、第三、第四、第八分時刻。

/n代表每隔 n 單位間隔,n 代表間隔多長,例如每五分鐘進行一次,則可在分欄位標示0-59/5,在0-59時間段裡每五分鐘裡。這個符號一般與上面三個符號連用。

注意:周與日月不能同時設定,這樣可能cron無法準確獲取時間。周欄位中0代表周天。

上面可能說的模稜兩可,下面有些例子,可以幫助理解:

43 21 * * *              21:43 執行
15 05 * * *              05:15 執行
0 17 * * *               17:00 執行
0 17 * * 1               每週一的 17:00 執行
0,10 17 * * 0,2,3        每週日,週二,週三的 17:00和 17:10 執行
0-10 17 1 * *            毎月1日從 17:00到7:10 毎隔1分鐘 執行
0 0 1,15 * *             毎月1日和 15日和 一日的 0:00 執行
42 4 1 * *               毎月1日的 4:42分 執行
0 21 * * 1-6             週一到週六 21:00 執行
0,10,20,30,40,50 * * * *  每隔10分 執行
*/10 * * * *              每隔10分 執行
* 1 * * *                 從1:0到1:59 每分鐘 執行
0 1 * * *                 1:00 執行
0 */1 * * *               毎時0分 每隔1小時 執行
0 * * * *                 毎時0分 每隔1小時 執行
2 8-20/3 * * *            8:02,11:02,14:02,17:02,20:02 執行
30 5 1,15 * *             1日 和 15日的 5:30 執行
例子是網上找的,但也都可以用,筆者已經檢查過。

其他

這裡主要說一些自己查到和翻閱manpage看到的內容
1) Debian中的cron增加了一個系統級任務特性,這個特性一般便於系統管理,在/etc/目錄下有基於時(cron.hourly)、日(cron.daily)、月(cron.monthly)、周(cron.weekly)的任務註冊檔案,系統級任務都將記錄註冊在這些檔案中。並且作業通過run-parts呼叫。

2)當使用crontab註冊任務時,是為使用者註冊,非管理員,當然管理員也可以通過這個工具註冊。註冊的作業並不是存放在/etc/crontab檔案,而是按照使用者不同,在目錄/var/sqool/cron下建立以使用者名稱命名的目錄,並將註冊資訊填寫在此目錄的檔案中。

3)/etc/crontab檔案一般給管理員使用者檢視。

4)在Debian下cron的日誌寫在syslog中,可以在/var/log/syslog中檢視。

寫在後面

本文中有很多資訊來自網際網路,例子都經過測試,在kali2系統(基於Debian)上無誤。若有不足或錯誤,歡迎各位指正。

相關推薦

Linux Crontab定時任務

crontab 定時任務 linux定時任務 定時腳本 一、說明很多項目需要設置一定服務器的定時任務Crontab來實現一些腳本功能,所以在這裏整理總結一下。環境:linux + centos6.8二、準備1、查看服務器的crontab是否在服務器狀態service crond status啟

Linux crontab 定時任務命令詳解

-1 data new ubuntu 時間間隔 服務 run back use Linux Crontab 定時任務 命令詳解 [日期:2016-02-13] 來源:Linux社區 在工作中需要數據庫在每天零點自動備份所以需要建立一個定時任務.我選擇在Linux下使用

Linux - crontab 定時任務

oot pool spa pro top 時間 body second 定時 定時任務 at 5pm + 3 days /bin/ls # 單次定時任務 指定三天後下午5:00執行/bin/ls crontab -e # 編輯周期任務 #分鐘 小時 天 月 星期 命令或

linux crontab定時任務詳解

使用crontab你可以在指定的時間執行一個shell指令碼或者一系列Linux命令。例如系統管理員安排一個備份任務使其每天都執行 如何往 cron 中新增一個作業? # crontab –e0 5 * * * /root/bin/backup.sh 這將會在每天早上5點執行 /root/bin/bac

linux crontab定時任務未執行

在遇到這次問題之前,我已經多次使用了定時任務,這次也正常設定了定時任務,但是死活發現定時任務沒有執行。 crontab設定如下:   bg_action_report.sh內容如下: #!/bin/sh #date=`date +%Y%m%d` #filePath

授權普通使用者Linux crontab定時任務

專案需求,在Linux下做個定時任務,而且是普通使用者下可控的。網上找資料,方向沒找對,就暫時用root使用者做定時任務。最後別人提示用sudo,才有了這篇文章。 下面就說一下方法: 1. 建立任務(普通使用者) crontab -e 編輯計劃任務 加上任務

linux crontab定時任務命令的介紹

1、簡介: linux中crontab命令是在一定的時間自動呼叫一些命令的執行 2、crontab語法: crontab [-u user] file crontab [-u user] [ -e | -l | -r ] (default operation is repla

linux crontab定時任務的使用 避免踩坑

一、crontab中呼叫shell指令碼1.確保yourscriptsname.sh的許可權是755。   如果不確定,可以在sh指令碼所在資料夾下用ll命令檢視,若顯示如下圖-rw-r--r--表示沒有執行許可權,用sudo chmod 755     yourscript

linux crontab 定時任務配置使用者環境變數

在定時任務crontab 配置呼叫shell指令碼,指令碼在客戶端測試無誤。 指令碼1任務:遠端在S3下載複製資料到HDFS,呼叫Spark叢集分析分散式檔案系統的資料輸出到HDFS,呼叫hive載入分析完成的資料到特定的表。 異常現象:提示缺少hive的執行jar包。

Linux crontab定時任務的使用

crontab是Unix和Linux用於設定週期性被執行的軟體包,伺服器上很多系統任務都會週期性執行,比如重啟某個伺服器,定期清理日誌等。這就可以使用crontab。將任務註冊到cron程序檢視的配置檔案中,這樣cron週期性地檢視這些配置檔案時,將會執行設定好的定時任務。

linux crontab定時任務執行php檔案

下面簡單介紹一下什麼是crontab crond是linux下用來週期性的執行某種任務或等待處理某些事件的一個守護程序,與windows下的計劃任務類似,當安裝完成作業系統後,預設會安裝此服務工具,並且會自動啟動crond程序,crond程序每分鐘會定期檢查是否有要執行的

linux crontab 定時任務 郵件問題 及其相關的 dead.letter 問題

最近開發專案的時候發現公司伺服器用root賬號登入的時候 一直會提示有新的信件,一直提示一直提示。   聯想到另一臺伺服器上 的dead.letter檔案每天都不斷的變大  而且在 root家目錄裡 ,系統硬盤裡。過十天半個月就會收到 伺服器的磁碟使用率超90%的報警簡訊, 我突然感覺是

linux應用之crontab定時任務的設置

表格 軟件 結果 monthly 不執行 shell腳本 service 文件 時間 實現Linux定時任務有:cron、anacron、at等,這裏主要介紹cron服務。 名詞解釋: cron是服務名稱,crond是後臺進程,crontab則是定制好的計劃任務表。

linuxCrontab 定時任務 使用實例

進行 服務器 image program 權限 舉例 星期六 style log 1 使用putty 登錄linux 服務器 2 輸入以下命令。查看已有的定時任務 crontab -l 3 輸入 以下命令,進入定時任務文件 crontab -e 4 鍵盤

Linuxcrontab定時任務

define fine 第幾天 sudo man 都是 ron 重新 spool ****crontab簡介**** 簡而言之呢,crontab就是一個自定義定時器。 ****crontab配置文件**** 其一:/var/spool/cron/ 該目錄下存放的是每個

Linux上如何使用 Crontab定時任務

sys 電子郵件 tail 一起 post 任務調度 原本 守護進程 硬盤 linux 系統則是由 cron (crond) 這個系統服務來控制的。Linux 系統上面原本就有非常多的計劃性工作,因此這個系統服務是默認啟動的。另 外, 由於使用者自己也可以設置計劃任務

linux定時任務crontab

每一個 usr mil 不同 local soft mic 情況下 設備 CRONTAB概念/介紹 crontab命令用於設置周期性被執行的指令。該命令從標準輸入設備讀取指令,並將其存放於“crontab”文件中,以供之後讀取和執行。 cr

linux服務器crontab定時任務

分開 由於 輸入 結果 信息 不用 root用戶 linux服務器 rontab ※ cron是一個linux下的定時執行工具,可以在無需人工幹預的情況下運行作業。由於Cron 是Linux的內置服務,但它不自動起來,可以用以下的方法啟動、關閉這個服務:service cr

linux crontab定時執行任務

apache。 它的 相同 24小時 介紹 window 進度 打開 屏幕截圖 在使用一個計算機系統時,常常需要在日程表上執行某些重復的工作。你可以通過使用Linux Cron工具和Crontab命令更簡便地執行每一次所需的命令,而不是手動去執行。想知道如何使用這些命令在L

Linux設定定時任務crontab命令

1、  crontab命令概念 crontab命令用於設定週期性被執行的指令。該命令從標準輸入裝置讀取指令,並將其存放於“crontab”檔案中,以供之後讀取和執行。 cron 系統排程程序。 可以使用它在每天的非高峰負荷時間段執行作業,或在一週或一月中的不同時段執行。cron是系統主要的排程程