Linux學習_任務排程基本說明
阿新 • • 發佈:2018-12-10
crond 任務排程
crontab 進行定時任務的設定
-
概述 任務排程:是指系統在某個時間執行的特定的命令或程式。 任務排程分類: 1.系統工作:有些重要的工作必須周而復始地執行。如病毒掃描等 2.個別使用者工作:個別使用者可能希望執行某些程式,比如對mysql資料庫的備份。
-
基本語法
crontab [選項]
-
常用選項
選項 | 功能 |
---|---|
-e | 編輯crontab定時任務 |
-l | 查詢crontab任務 |
-r | 刪除當前使用者所有的crontab任務 |
任務排程檔案:/etc/crontab
設定個人任務排程。執行crontab –e
命令。
會進入一個類似用vim開啟的檔案的介面,
接著輸入任務到排程檔案中
如:*/1 * * * * echo "hello" >> /tmp/to.txt
echo "hello" >> /tmp/to.txt
命令
(每分鐘追加一個hello
到to.txt
中)
引數細節說明 5個*(佔位符)的說明
佔位符 | 含義 | 範圍 |
---|---|---|
第一個“*” | 一小時當中的第幾分鐘 | 0-59 |
第二個“*” | 一天當中的第幾小時 | 0-23 |
第三個“*” | 一個月當中的第幾天 | 1-31 |
第四個“*” | 一年當中的第幾月 | 1-12 |
第五個“*” | 一週當中的星期幾 | 0-7(0和7都代表星期日) |
特殊符號的說明
特殊符號 | 含義 |
---|---|
* | 代表任何時間。比如第一個“*”就代表一小時中每分鐘都執行一次的意思。 |
, | 代表不連續的時間。比如“0 8,12,16 * * * 命令”,就代表在每天的8點0分,12點0分,16點0分都執行一次命令 |
- | 代表連續的時間範圍。比如“0 5 * * 1-6命令”,代表在週一到週六的凌晨5點0分執行命令 |
*/n | 代表每隔多久執行一次。比如“*/10 * * * * 命令”,代表每隔10分鐘就執行一遍命令 |
例子
特定時間執行任務案例
時間 | 含義 |
---|---|
45 22 * * * 命令 | 在22點45分執行命令 |
0 17 * * 1 命令 | 每週1 的17點0分執行命令 |
0 5 1,15 * * 命令 | 每月1號和15號的凌晨5點0分執行命令 |
40 4 * * 1-5 命令 | 每週一到週五的凌晨4點40分執行命令 |
*/10 4 * * * 命令 | 每天的凌晨4點,每隔10分鐘執行一次命令 |
0 0 1,15 * 1 命令 | 每月1號和15號,每週1的0點0分都會執行命令。注意:星期幾和幾號最好不要同時出現,因為他們定義的都是天。非常容易讓管理員混亂。 |
crond 相關指令:
conrtab –r
:終止任務排程。crontab –l
:列出當前有那些任務排程service crond restart
[重啟任務排程]
例子
案例1:每隔1分鐘,就將當前的日期資訊,追加到 /home/fox/date.txt 檔案中 換一種寫法,我們把命令寫到腳本里面去,然後讓任務去呼叫這個指令碼
- 先編寫一個指令碼
[[email protected] fox]# vim mydate.sh
date>>/home/fox/date.txt
- 給mydate.sh一個可執行許可權
[[email protected] fox]# chmod 744 mydate.sh
- 執行 crontab -e 命令
- 設定任務(寫完了記得wq儲存一下):
*/1 * * * * /home/fox/mydate.sh
- 成功
[[email protected] fox]# ls
1.txt 2.txt date.txt mydate.sh
[[email protected] fox]# cat date.txt
Wed Sep 19 13:50:01 CST 2018
案例2:每隔1分鐘, 將當前日期和日曆都追加到 /home/mycal 檔案中
這個和上一個案例差不多
案例3: 每天凌晨2:00 將mysql資料庫 testdb ,備份到檔案中。
sh中的命令改一下
/usr/local/mysql/bin/mysqldump -u root -proot testdb > /tem/mydb.bak
步驟四的改為
0 2 * * * /home/fox/mydate.sh