1. 程式人生 > >Linux系統中的crontab命令的常見用法

Linux系統中的crontab命令的常見用法

(1)概述:

crontab命令常見於Unix和Linux的作業系統之中,用於設定週期性被執行的指令。該命令從標準輸入裝置讀取指令,並將其存放於"crontab"檔案中,以供之後讀取和執行。

在Linux系統中,Linux任務排程的工作主要分為以下兩類:

1)系統執行的工作:系統週期性所要執行的工作,如備份系統資料、清理快取

2)個人執行的工作:某個使用者定期要做的工作,例如每隔10分鐘檢查郵件伺服器是否有新信,這些工作可由每個使用者自行設定

(2)/etc/crontab、/etc/cron.deny 、 /etc/cron.allow檔案介紹
系統排程的任務一般存放在/etc/crontab這個檔案下,裡面存放了一些系統執行的排程程式,通過命令我們可以看一下里面的內容

[[email protected] ~]$ cat /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root

# For details see man 4 crontabs

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name  command to be executed
這些任務都會是系統在執行起來後自動進行排程的。同時在/etc目錄下還存放了/etc/cron.deny 和 /etc/cron.allow 檔案
/etc/cron.deny 表示不能使用crontab 命令的使用者
/etc/cron.allow 表示能使用crontab的使用者。
如果兩個檔案同時存在,那麼/etc/cron.allow 優先。
如果兩個檔案都不存在,那麼只有root使用者可以安排作業。

(3)crontab命令語法及其各個引數含義
crontab命令的語法為:

crontab [-e [UserName]|-l [UserName]|-r [UserName]|-v [UserName]|File ] 
注意:crontab 是用來讓使用者在固定時間或固定間隔執行程式之用,換句話說,也就是類似使用者的時程表。-u user 是指設定指定 user 的時程表,這個前提是你必須要有其許可權(比如說是 root)才能夠指定他人的時程表。如果不使用 -u user 的話,就是表示設定自己的時程表。

具體引數說明:

-e [UserName]: 執行文字編輯器來設定時程表,內定的文字編輯器是 vi
-r [UserName]: 刪除目前的時程表
-l [UserName]: 列出目前的時程表
-v [UserName]:列出使用者cron作業的狀態
(4)crontab命令的格式

如果要建立自己的一個任務排程,可以使用  crontab -e 這個命令,如:

[[email protected] ~]$ crontab -e
此時會進入到vi編輯介面,來編寫我們要排程的任務,crontab排程命令的格式如下:
* * * * * command path  // 前五個欄位可以取整數值,指定何時開始工作,第六個域是字串,即命令欄位,其中包括了crontab排程執行的命令。 各個欄位之間用spaces和tabs分割。

排程命令的規則:

欄位名稱 說明 取值範圍
分鐘 每小時的第幾分鐘執行 0-59
小時   每日的第幾個小時執行 0-23
日期 每月的第幾天執行 1-31
月曆 每年的第幾月執行 1-12
星期 每週的第幾天執行 0-6
命令名稱 欲執行的命令及引數

crontab命令中的一些常用特殊符號:

符號  說明
* 表示任何時刻
, 表示分割
表示一個段,如第二段裡: 1-5,就表示1到5點
/n 表示每個n的單位執行一次,如第二段裡,*/1, 就表示每隔1個小時執行一次命令。也可以寫成1-23/1.

下面給出一些crontab命令的例項:

8,12,16 * * * /data/app/scripts/monitor/df.sh
2 * * * /data/app/scripts/hotbackup/hot_database_backup.sh
8,12,16 * * * /data/app/scripts/monitor/check_ind_unusable.sh
8,12,16 * * * /data/app/scripts/monitor/check_maxfilesize.sh
8,12,16 * * * /data/app/scripts/monitor/check_objectsize.sh
21 * * *  每天的21:43 執行
05 * * *    每天的05:15 執行
17 * * * 每天的17:00 執行
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 1,15 * 1 毎月1日和 15日和 一日的 0:00 執行
4 1 * *     毎月1日的 4:42分 執行
21 * * 1-6   週一到週六 21:00 執行

0,10,20,30,40,50 * * * * 每隔10分 執行

*/10 * * * *        每隔10分 執行

* 1 * * *         從1:0到1:59 每隔1分鐘 執行
1 * * *         1:00 執行
*/1 * * *        毎時0分 每隔1小時 執行
* * * *         毎時0分 每隔1小時 執行
8-20/3 * * *      8:02,11:02,14:02,17:02,20:02 執行
5 1,15 * *       1日 和 15日的 5:30 執行
(5)建立我們自己的crontab命令
①例項一:如果我希望每隔一分鐘,就將系統的時間寫入到/home目錄下的date1.txt檔案裡面,則輸入下面的命令
[[email protected] ~]$ crontab -e

在crontab命令編輯介面輸入crontab命令:  * * * * * date >> /home/date1.txt  
(前面五個* * * * *表示時間是每隔一分鐘  date命令就是得到當前的系統時間, >> 命令表示將結果累加到檔案後面 > 命令則表示將結果覆蓋檔案 )
儲存以後如果出現  crontab: installing new crontab 這句話,則表示該排程命令已經成功 我們可以到/home目錄下看是否已經存在了該文字檔案,並檢視裡面的資訊:
[[email protected] ~]$ cat date1.txt 
Sat Apr  6 16:15:09 CST 2017
Sat Apr  6 16:16:02 CST 2017
Sat Apr  6 16:17:01 CST 2017
此時我們發現,剛才編寫的那個crontab命令已經正常在運行了,只要沒有執行終止命令或者系統關機,這個命令會一直執行下去。 ②例項二:如果我們需要同時完成兩件命令,即每隔一分鐘就將系統時間寫入到/home目錄下的date1.txt檔案裡面,同時再每隔一分鐘將該date1.txt檔案拷貝到/目錄下生成一個date2.txt的檔案。這時我們通常該怎麼做呢?方法有兩種: a) 最簡單最直接的方法(不推薦):直接輸入crontab -e 命令,在後面再追加一個命令即可,如:
[[email protected] ~]$ crontab -e
* * * * * date >> /home/date1.txt
* * * * * cp /home/date1.txt /date2.txt
最後我們退出儲存即可,此時我們可以發現/目錄下已經有了date2.txt這個檔案了,開啟後可以看到其內容和date1.txt一樣:
[[email protected] ~]$ cat date2.txt
Sat Apr  6 16:15:09 CST 2017
Sat Apr  6 16:16:02 CST 2017
Sat Apr  6 16:17:01 CST 2017
Sat Apr  6 16:18:01 CST 2017
Sat Apr  6 16:19:01 CST 2017
Sat Apr  6 16:20:01 CST 2017
Sat Apr  6 16:21:01 CST 2017
Sat Apr  6 16:22:01 CST 2017
雖然這種方法比較簡單,但是並不推薦這種,因為如果命令一多的話,並且如果我需要不同使用者執行不同的命令時,這種方法在維護起來不方便,所以這裡介紹另外一種方法。
b) 首先編寫一個可執行的sh檔案,然後將我們要執行的任務寫著sh檔案裡面,最後通過crontab來執行我們的sh檔案即可(推薦)
首先我們在/目錄下編寫一個task.sh的檔案,裡面的內容就是我們剛要執行的兩條命令
[[email protected] ~]$ vi task.sh
task.sh裡面的命令
date >> /home/date1.txt
cp /home/date1.txt /date3.txt
此時我們的task.sh還不是可執行檔案,通過ls -l命令我們可以看到
-rw-r--r--.   1 root root    54 4月   6 16:27 task.sh  //tash.sh是不可執行的,我們要修改其許可權
所以我們需要通過chmod命令來修改task.sh的許可權:
[[email protected] ~]$ chmod 744 task.sh
此時再檢視,就發現task.sh已經是可執行檔案了:
-rwxr--r--.   1 root root    54 4月   6 16:27 task.sh
然後我們輸入crontab -e 命令,將之前的兩條命令刪除掉,或者在前面加 # 號註釋掉:
#* * * * * date >> /home/date1.txt
#* * * * * cp /home/date1.txt /date2.txt
* * * * * /task.sh
這時我們發現根目錄下面已經存在了date3.txt檔案了,開啟就可以發現裡面的內容為:
[[email protected] ~]$ cat date3.txt
Sat Apr  6 16:15:09 CST 2017
Sat Apr  6 16:16:02 CST 2017
Sat Apr  6 16:17:01 CST 2017
Sat Apr  6 16:18:01 CST 2017
Sat Apr  6 16:19:01 CST 2017
Sat Apr  6 16:20:01 CST 2017
Sat Apr  6 16:21:01 CST 2017
Sat Apr  6 16:22:01 CST 2017
Sat Apr  6 16:23:02 CST 2017
Sat Apr  6 16:24:01 CST 2017
(6)crontab的其他一些命令
如果我們需要列出自己建立的任務排程都有哪些命令,可以使用 crontab -l 命令來檢視
[[email protected] ~]$ crontab -l
#* * * * * date >> /home/date1.txt
#* * * * * cp /home/date1.txt /date2.txt
* * * * * /task.sh
如果我們需要終止自己剛建立的任務排程,則使用 crontab -r 命令即可
[[email protected] ~]$ crontab -r
此時我們可以發現,crontab裡面的任務都已經沒有了 (7)cron服務的啟動 我們可以通過 chkconfig --list | grep cron 命令來檢視cron服務的啟動情況:
[[email protected] ~]$ chkconfig --list | grep cron
crond              0:關閉    1:關閉    2:啟用    3:啟用    4:啟用    5:啟用    6:關閉
我們可以看到,系統啟動級別如果是1-4,cron服務都會開機自動啟動的,我們可以通過如下命令來設定該服務的啟動項:
/sbin/service crond start
/sbin/service crond stop
/sbin/service crond restart
/sbin/service crond reload
以上1-4行分別為啟動、停止、重啟服務和重新載入配置。
要把cron設為在開機的時候自動啟動,在 /etc/rc.d/rc.local 指令碼中加入 /sbin/service crond start 即可。
參考網址:https://www.cnblogs.com/xiaoluo501395377/archive/2013/04/06/3002602.html

相關推薦

Linux系統crontab命令學習

前一天學習了 at 命令是針對僅執行一次的任務,迴圈執行的例行性計劃任務,linux系統則是由 cron (crond) 這個系統服務來控制的。Linux 系統上面原本就有非常多的計劃性工作,因此這個系統服務是預設啟動的。另外, 由於使用者自己也可以設定計劃任務

Linux 系統find 命令用法

根據檔案或者正則表示式進行匹配 列出當前目錄及子目錄下所有檔案和資料夾 find . 在/home目錄下查詢以.txt結尾的檔名 find /home -name "*.txt" 同上,但忽略大小寫 find /home -iname "*.txt" 當前目錄及子目錄下查詢所有以.txt和.pdf

Linux系統ls命令的使用

htm target alt nbsp .cn ls命令 bsp tro -a 【備註】本文僅為本人學習筆記,歡迎學習,其中大部分借鑒了出處: https://linux.cn/article-5109-1.html 等下要list的目錄:~ ls命令 ls -l

Linux系統下mail命令用法

and blog chdir 幫助 方法 enter lis pid from 在Linux系統下mail命令的測試 1. 最簡單的一個例子: mail -s test [email protected] 這條命令的結果是發一封標題為test的空信給後面的郵箱,如果你

Linux 系統 sudo 命令的 10 個技巧

etc visudo linux. 安全 pwd 自己的 技術 ups linu 概覽 sudo 表示 “superuser do”。 它允許已驗證的用戶以其他用戶的身份來運行命令。其他用戶可以是普通用戶或者超級用戶。然而,大部分時候我們用它來以提升的權限來運行命令。 su

Linux系統find 命令的使用

find 按檔名稱尋找 按檔案使用者和使用者組尋找 find /westos -user student查詢/westos目錄下使用者為student的檔案 find /westos -group student查詢/westos目錄下使用者組為student的檔案

Linux系統ls命令詳解

ls命令是linux下最常用的命令。ls命令就是list的縮寫 1. 命令格式: ls [選項,常用引數] [目錄名] 2. 命令功能: 列出目標目錄中所有的子目錄和檔案。 3. 常用引數: -a, –all 列出目錄下的所有檔案,包括以 . 開

Linux系統yum 命令講解

  (一)yum介紹 Yum(全稱為 Yellow dogUpdater, Modified)是一個在Fedora和RedHat以及CentOS中的Shell前端軟體包管理器。基於RPM包管理,能夠從指定的伺服器自動下載RPM包並且安裝

linux系統查詢命令grep命令詳解

grep(global search regular expression(RE) and print out the line,全面搜尋正則表示式並把行打印出來)是一種強大的文字搜尋工具,它能使用正則表示式搜尋文字,並把匹配的行打印出來。 選項 -a 不要忽略二進位制資料。 -A<顯示列數>

Linux系統crontab定時器設定

基本格式 : *  *  *  *  *  command 分  時  日  月  周  命令 第1列表示分鐘1~59 每分鐘用或者 /1表示 第2列表示小時0~23(0

linux系統檢視命令進度

使用cp命令複製大量檔案時,無法監視當前的進度,progress工具很好地解決了這個問題。 1、官網提供了下載連結,地址:https://github.com/Xfennec/progress 或者使用命令 $git clone [email protected]

crontab命令常見用法示例

# For details see man 4 crontabs # Example of job definition: # .---------------- minute (0 - 59

Linux系統crontab命令常見用法

(1)概述: crontab命令常見於Unix和Linux的作業系統之中,用於設定週期性被執行的指令。該命令從標準輸入裝置讀取指令,並將其存放於"crontab"檔案中,以供之後讀取和執行。 在Linux系統中,Linux任務排程的工作主要分為以下兩類: 1)系統執行的工作

Linux系統定時任務cron和crontab命令詳解與配置規則說明

cron機制         cron可以讓系統在指定的時間,去執行某個指定的工作,我們可以使用crontab指令來管理cron機制 crontab引數         -u:這個引數可以讓我們去編輯其他人的crontab,如果沒有加上這個引數的話就會開啟自己的crontab

linuxcrontab命令的基本用法

例子: crontab檔案由六個域組成,每個域之間用空格分割,其排列如下:B 。 A MIN HOUR DAY MONTH YEAR COMMAND B MIN HOUR DAY MONTH DAYOFWEEK COMMAND C COMMAND HOUR DAY MONT

linux系統的定時器crontab的使用攻略、常見錯誤問題和執行.jar檔案的具體例項。

今天有個定時任務要從windows上部署到linux上,查了好多資料,總是有各種各樣的問題。雖然最後終於都一一解決了,不過感覺現有的那些詳細教程什麼的不夠詳細,或者說大神們想當然的事,像我這種小白就還是會跳坑。然後就把網上現有的許多的crontab的文章總結了一下,加上自己

Linuxdd命令用法

dddd命令: convert and copy a file用法:dd?if=/PATH/FROM/SRC?of=/PATH/TO/DEST bs=#:?block?size,?復制單元大小 count=#:復制多少個bs of=file?寫到所命名的文件而不是到標準輸出 if=file?從所命名文件讀取而

Linux系統使用lftp命令實現FTP上傳下載

lcd 工作 亂碼問題 pwd -- cd 命令 史記 size ls 命令 Linux 下常用的操作命令有 ftp、 lftp 和 sftp,圖形化界面非常好用的有 FileZilla。不過在服務器命令界面中,lftp使用比較方便,功能也比ftp更加強大。lftp的界面

linux系統如何查看日誌 (常用命令)

linux系統中如何查看日誌 (常用命令日 誌 文 件 說 明/var/log/message 系統啟動後的信息和錯誤日誌,是Red Hat Linux中最常用的日誌之一/var/log/secure 與安全相關的日誌信息/var/log/maillog 與郵件相關的日誌信息/var/log/cron

Linuxsource命令用法

立即生效 常常 new 重新登錄 核心 linu 用戶 成功 多次 source命令:   source命令也稱為“點命令”,也就是一個點符號(.)。source命令通常用於重新執行剛修改的初始化文件,使之立即生效,而不必註銷並重新登錄。因為lin