Linux系統中的crontab命令的常見用法
(1)概述:
crontab命令常見於Unix和Linux的作業系統之中,用於設定週期性被執行的指令。該命令從標準輸入裝置讀取指令,並將其存放於"crontab"檔案中,以供之後讀取和執行。
在Linux系統中,Linux任務排程的工作主要分為以下兩類:
1)系統執行的工作:系統週期性所要執行的工作,如備份系統資料、清理快取2)個人執行的工作:某個使用者定期要做的工作,例如每隔10分鐘檢查郵件伺服器是否有新信,這些工作可由每個使用者自行設定
(2)/etc/crontab、/etc/cron.deny 、 /etc/cron.allow檔案介紹
系統排程的任務一般存放在/etc/crontab這個檔案下,裡面存放了一些系統執行的排程程式,通過命令我們可以看一下里面的內容
這些任務都會是系統在執行起來後自動進行排程的。同時在/etc目錄下還存放了/etc/cron.deny 和 /etc/cron.allow 檔案[[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/cron.deny 表示不能使用crontab 命令的使用者
/etc/cron.allow 表示能使用crontab的使用者。
如果兩個檔案同時存在,那麼/etc/cron.allow 優先。
如果兩個檔案都不存在,那麼只有root使用者可以安排作業。
(3)crontab命令語法及其各個引數含義
crontab命令的語法為:
注意:crontab 是用來讓使用者在固定時間或固定間隔執行程式之用,換句話說,也就是類似使用者的時程表。-u user 是指設定指定 user 的時程表,這個前提是你必須要有其許可權(比如說是 root)才能夠指定他人的時程表。如果不使用 -u user 的話,就是表示設定自己的時程表。crontab [-e [UserName]|-l [UserName]|-r [UserName]|-v [UserName]|File ]
具體引數說明:
-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
linux中crontab命令的基本用法
例子: 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的文章總結了一下,加上自己
Linux中dd命令的用法
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
Linux中source命令的用法
立即生效 常常 new 重新登錄 核心 linu 用戶 成功 多次 source命令: source命令也稱為“點命令”,也就是一個點符號(.)。source命令通常用於重新執行剛修改的初始化文件,使之立即生效,而不必註銷並重新登錄。因為lin