1. 程式人生 > >Linux 定時任務(crontab)

Linux 定時任務(crontab)

介紹

本篇主要介紹Linux定時任務命令crontab的用法,crontab是定時任務的命令,而crond則是定時任務的啟動服務。crontab的定時任務分為系統任務和使用者任務,其實二者沒有太大的區別。

安裝

在centos中crond預設是安裝好的,如果沒有安裝的話執行以下操作

安裝crond
yum -y install vixie-cron
yum -y install crontabs

加入開啟啟動服務
chkconfig crond on

啟動 

在Centos中crond服務預設是自動啟動的,如果沒有啟動可以手動啟動,具體方法如下。

檢視定時任務是否啟動
service crond status

將定時任務加入系統自動啟動服務
chkconfig crond 
on

啟動定時任務服務
service crond start

系統任務排程

系統定時任務一般用來執行一些系統方面的操作,比如日誌清理;系統的定時任務可以通過編輯/etc/crontab來設定。
  • SHELL:系統要使用哪個shell

  • PATH:系統定時任務執行的命令的路徑,不要把這個PATH和系統環境變數認為是一樣,二者沒有關係,在系統環境變數裡面配置的路徑在這裡不能生效。

  • MAILTO:用來接收郵件的使用者,預設是root,郵箱的內容會儲存在"/var/spool/mail/root"檔案中。

  • HOME:系統定時任務的家目錄。

 注意:系統定時任務在命令前必須指定使用者,一般系統定時任務會使用root使用者來執行,系統定時任務還可以配置定時任務的路徑,但是要使用“run-parts”,例如每個小時執行資料夾下面的定時任務,使用者定時任務不能指定資料夾。
00 * * * * root run-parts /etc/cron.hourly

使用者任務排程

使用者的定時任務可以通過執行crontab命令來建立,一個使用者只會生成一個定時任務檔案會以使用者名稱命名,使用者定義的定時任務都儲存在“/var/spool/cron”目錄下,使用者任務排程和系統任務排程的時間段是一樣的,唯一的區別就是使用者任務排程不需要指定使用者名稱,而且也不能使用run-parts引數指定目錄。

crontab命令選項

crontab [-u user] file

crontab [-u user] [ -e | -l | -r ]

  • -e:建立和編輯定時任務,預設是建立和編輯當前使用者的定時任務,只有root可以建立也編輯其它使用者的定時任務。

  • -l:列出當前使用者的定時任務,如果使用了-u引數指定了使用者那麼就是列出指定使用者的定時任務。

  • -r:刪除當前使用者的定時任務,如果使用了-u引數指定了使用者那麼就是刪除指定使用者的定時任務。

  • -i:在刪除使用者命令前加以提示,-i引數不能單獨使用需要結合-r引數以前使用。

兩種排程方式的不同點:

系統定時任務是整個系統級別的定時任務,只有root使用者可以建立,通過在/etc/crontab檔案或者是在/etc/cron.d/目錄中建立定時任務。

使用者定時任務是每個使用者都可以建立的定時任務,通過執行crontab -e進行建立,每個使用者的定時任務儲存在“/var/spool/cron”目錄下每個使用者自己的檔案中。也可以通過“crontab -l”檢視使用者自己的定時任務

兩種排程方式的相同點:

兩種定時任務的建立都是永久的,伺服器重啟後也不會失效;每次建立任務不需要重啟crond服務。

crontab任務格式

crontab分別有五個時間段,以空格隔開分別如下:
minute hour day month week command 順序:分 時 日 月 周

其中:

  • minute: 表示分鐘,可以是從0到59之間的任何整數。

  • hour:表示小時,可以是從0到23之間的任何整數。

  • day:表示日期,可以是從1到31之間的任何整數。

  • month:表示月份,可以是從1到12之間的任何整數。

  • week:表示星期幾,可以是從0到7之間的任何整數,這裡的0或7代表星期日。

  • command:要執行的命令,可以是系統命令,也可以是自己編寫的指令碼檔案。

在以上各個欄位中,還可以使用以下特殊字元:

  • 星號(*):代表所有可能的值,例如month欄位如果是星號,則表示在滿足其它欄位的制約條件後每月都執行該命令操作。

  • 逗號(,):可以用逗號隔開的值指定一個列表範圍,如:“1,2,5,7,8,9”,如果是month則表示這幾個月執行該命令。

  • 中槓(-):可以用整數之間的中槓表示一個整數範圍,例如“2-6”表示“2,3,4,5,6”

  • 正斜線(/):可以用正斜線指定時間的間隔頻率,例如“10-23/2”如果是指小時代表10點到23點每隔2個小時執行一次。例如*/1可以表示每隔一個小時執行一次。

其它限制:

/etc/cron.deny 該檔案中所列使用者不允許使用crontab命令

/etc/cron.allow 該檔案中所列使用者允許使用crontab命令 

/var/spool/cron/ 所有使用者crontab檔案存放的目錄,以使用者名稱命名

注意:預設的使用者的shell,path,mailto,home是沒有定義的,可以單獨定義使用者的這幾個變數否則可能會出現使用者找不到一些使用者軟體的命令,具體的定義方法可以參考系統任務的定義,主要還是SHELL、PATH。預設的使用者的這幾個變數資訊如下:

X-Cron-Env:<SHELL=/bin/sh>
X-Cron-Env: <HOME=/home/chen>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=chen>
X-Cron-Env: <USER=chen>

例1:每天的1點到6點和13點到18點,每隔5分鐘執行命令

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/mysql/bin
MAILTO=chen
HOME=/data/backup
*/5 01-06,13-18 * * * ./userbackup.sh test

上面定義了每天的1點到6點和13點到18點,每隔5分鐘執行命令。

例2:每天9點到18點每隔2個小時執行一次

0 09-18/2 * * * ./userbackup.sh test

注意:時間範圍01-06是指01:00-06:59,命令後面可以使用“;”連線多個命令

總結

定時任務很實用,而且實用方法也很多,有興趣可以慢慢研究。

備註:

本站點所有隨筆都是原創,歡迎大家轉載;但轉載時必須註明文章來源,且在文章開頭明顯處給明連結。

《歡迎交流討論》

相關推薦

Linux定時任務Crontab命令

主目錄 日誌清理 文件中 定義 服務 系統命令 root spool 詳細 linux 系統則是由 cron (crond) 這個系統服務來控制的。Linux 系統上面原本就有非常多的計劃性工作,因此這個系統服務是默認啟動的。另 外, 由於使用者自己也可以設置計劃任務,所以

linux定時任務crontab

9.png linux .cn 命令 png alt nbsp ont 技術分享 *  *  *  *  *  command 分 時 日 月 周 命令 linux定時任務crontab

LinuxLinux定時任務Crontab命令詳解

星期幾 ima 默認 定時 最好 表示 時間 path 配置文件 linux 系統則是由 cron (crond) 這個系統服務來控制的。Linux 系統上面原本就有非常多的計劃性工作,因此這個系統服務是默認啟動的。另 外, 由於使用者自己也可以設置計劃任務,所以, Lin

Linux定時任務Crontab命令詳解

自動 monthly ons 命名 維護 我們 周期 你在 腳本文件 linux 系統則是由 cron (crond) 這個系統服務來控制的。Linux 系統上面原本就有非常多的計劃性工作,因此這個系統服務是默認啟動的。另 外, 由於使用者自己也可以設置計劃任務,所以, L

linux定時任務crontab詳解

將不 絕對路徑 lin csdn 似的 文件內容 關閉 HERE 自動啟動 1、Crontab程序   crontab命令常見於Unix和類Unix的操作系統之中,用於設置周期性被執行的指令。   crontab文件包含送交cron守護進程的一系列作業和指令。每個用戶可以擁

linux定時任務crontab命令講解

evel 有一個 空格 fff 多個 說明 詳解 星期 文件的 linux定時任務crontab命令講解 linux 系統則是由 cron (crond) 這個系統服務來控制的。Linux 系統上面原本就有非常多的計劃性工作,因此這個系統服務是默認啟動的。另 外, 由於使用

Linux定時任務Crontab解析

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

Linux定時任務crontab 和sudo授權管理

**只是個人學習筆記,抒寫比較混亂,慎看。在此也非常感謝各位大牛在網上上傳的教程和視訊;*** 一、crontab是一種週期性執行任務的工具;1、系統執行的工作:系統週期性要執行的工作,如備份系統資料、清理快取2、個人執行的工作:某個使用者定期要做的工作,例如每隔10分鐘檢查郵件伺服器是否有新信,這些工作可

【轉】Linux定時任務Crontab命令詳解

本文轉自:https://www.cnblogs.com/intval/p/5763929.html linux 系統則是由 cron (crond) 這個系統服務來控制的。Linux 系統上面原本就有非常多的計劃性工作,因此這個系統服務是預設啟動的。另 外, 由於使用者自己也可以

Linux定時任務Crontab執行PHP指令碼

http://blog.chinaunix.net/uid-7552018-id-182133.html crontab執行php指令碼 http://www.jb51.net/article/29136.htm  

【日常學習筆記】2019/1/9(Linux定時任務Crontab)

Linux定時任務Crontab   (1)是什麼? Crontab是Linux或Unix中被用於設定週期性任務的工具,簡單了,就是定時任務觸發器。   (2)Crontab格式 * * * * * 命令 第一個*代表分鐘,0~59 第二個*代

Linux定時任務Crontab的理解

Linux定時任務Crontab的理解 一.簡述 二.crond簡介 三.crond服務安裝與配置 安裝crontab命令 服務操作命令 檢視crontab服務是否已設定為開機啟動,執行命令 加入開機自動啟動命令

Linux 定時任務(crontab)

介紹 本篇主要介紹Linux定時任務命令crontab的用法,crontab是定時任務的命令,而crond則是定時任務的啟動服務。crontab的定時任務分為系統任務和使用者任務,其實二者沒有太大的區別。 安裝 在centos中crond預設是安裝好的,如果沒有安裝的話執行以下操作

linux 定時任務 crontab

任務排程的crond常駐命令crond 是linux用來定期執行程式的命令。當安裝完成作業系統之後,預設便會啟動此任務排程命令。crond命令每分鍾會定期檢查是否有要執行的工作,如果有要執行的工作便會自動執行該工作。而linux任務排程的工作主要分為以下兩類:1、系統執行的

linux定時任務crontab命令和crond服務詳解

linux 系統則是由 cron (crond) 這個系統服務來控制的。Linux 系統上面原本就有非常多的計劃性工作,因此這個系統服務是預設啟動的。另 外, 由於使用者自己也可以設定計劃任務,所以, Linux 系統也提供了使用者控制計劃任務的命令 :cron

Linux定時任務Crontab使用 提示no crontab for root

 使用命令查詢crontab 任務時,一直提示:no crontab for root 。查看了一些資料,說是crontab在初始時,設定了一次編輯方式,所以試了一下crontab -e的方式編輯,即在命令列,輸入 crontab -e ,進行編輯頁面,輸入定量執行的指

linux定時任務crontab的使用,curl命令中url避免使用&,或對&進行轉義

     在上個月的專案中,第一次使用到了linux伺服器,也是第一次使用到了crontab。      crontab是用於在linux伺服器上設定週期性執行指令的工具,關於其配置和使用方法網上有很

linux 定時任務at與crontab

linux at 定時任務 crontab 1、at一次性任務1.1 命令at安裝 從文件或標準輸入中讀取命令並在將來的一個時間執行,只執行一次。at的正常執行需要有守護進程atd.#安裝at yum install -y at #啟動守護進程 service atd s

linux設置定時任務crontab

color 沒有 備份 成功 cron rond crontab white 機器 linux設置定時任務crontab 前段時間參照一個博友的git設置了mongoDB的定時備份,後來發現並未成功,今天重新配置了一下,把crontab的兩種設置方式都嘗試了,而且測試可以正

linux centos 計劃任務 定時任務 crontab

linux centos 計劃任務定時任務 crontab 1、查看自啟動列表 chkconfig --list(centos6) systemctl is-enabled crond.service (centos7) 2、查看目前是否已經啟動 ps aux | grep crond 3、