1. 程式人生 > >Linux學習_任務排程基本說明

Linux學習_任務排程基本說明

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命令 (每分鐘追加一個helloto.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 相關指令:

  1. conrtab –r:終止任務排程。
  2. crontab –l:列出當前有那些任務排程
  3. service crond restart [重啟任務排程]

例子

案例1:每隔1分鐘,就將當前的日期資訊,追加到 /home/fox/date.txt 檔案中 換一種寫法,我們把命令寫到腳本里面去,然後讓任務去呼叫這個指令碼

  1. 先編寫一個指令碼
[[email protected] fox]# vim mydate.sh
date>>/home/fox/date.txt
  1. 給mydate.sh一個可執行許可權
[[email protected] fox]# chmod 744 mydate.sh 
  1. 執行 crontab -e 命令
  2. 設定任務(寫完了記得wq儲存一下):
*/1 * * * * /home/fox/mydate.sh
  1. 成功
[[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