一、簡單介紹LInux下的定時任務服務:crond服務
-
crond是Linux系統用來定期執行命令或指定程序的服務的一種服務或軟件。
-
一般情況下安裝完成Linux操作系統之后,默認便會啟動Crond任務調用服務。
-
Crond服務會定期(默認一分鍾檢查一次)檢查系統中是否有要執行的任務工作。如果有,便根據其預先設定的定時任務規則自動執行該定時任務工作。
二、設置定時任務,兩種方法
1、crontab命令
- crontab -e 進入當前用戶的定時任務vim編輯模式
-
crontab -l 查看當前用戶的定時任務配置
-
crontab -u 用戶名 -l 查看指定用戶的定時任務設置
注:crontab { -l | -e } 實際上就是在操作/var/spool/cron/當前用戶這樣的文件,root用戶就是/var/spool/cron/root
2、直接編輯/etc/crontab 文件,即vi /etc/crontab,添加相應的定時任務
注:crontab -e配置是針對當前用戶的定時任務,而編輯/etc/crontab是針對系統的定時任務
三、定時任務編寫規則說明
# 直接編輯/etc/crontab 文件
minute - 從0到59的整數
hour - 從0到23的整數
day - 從1到31的整數 (必須是指定月份的有效日期)
month - 從1到12的整數 (或如Jan或Feb簡寫的月份)
dayofweek - 從0到7的整數,0或7用來描述周日 (或用Sun或Mon簡寫來表示)
root - 表示以root用戶身份來運行
command - 需要執行的命令(可用as ls /proc >> /tmp/proc或 執行自定義腳本的命令)
run-parts表示后面跟着的是一個文件夾,要執行的是該文件夾下的所有腳本
對於以上各語句,星號(*)表示所有可用的值。例如*在指代month時表示每月執行(需要符合其他限制條件)該命令。
整數間的連字號(-)表示整數列,例如1-4意思是整數1,2,3,4
指定數值由逗號分開。如:3,4,6,8表示這四個指定整數。
符號“/”指定步進設置。“/<interger>”表示步進值。如0-59/2定義每兩分鍾執行一次。
# crontab -e 同上,只是不需要加用戶
四、其他
1、crontab 語法格式中特殊符號含義如下表
特殊符號 含義
* *號,表示任意時間都,實際就是“每”的意思
- 減號表示分隔符,表示一個時間范圍,區間段,如17-19點,例如:每天的17,18,19點的00分執行任務。00 17-19 * * * cmd
, 逗號,表示分隔時段的意思例如每天的5點10點00分執行任務,00 5,10 * * * cmd
/n n代表數字,即“每隔n單位時間”,例如:每10分鍾執行一次任務可以寫成/*10 * * * * cmd,其中,/10,的范圍是0-59,因此也可以寫成0-59/10
2、定時任務日志
# 不記錄日志,在每一行定時任務后面加上:
> /dev/null 2>&1
# 日志記錄追加到指定文件
>> /path/mylog.log 2>&1
說明:
> /dev/null 將輸出重定向到/dev/null,這是個空設備,也就是忽略其輸出。
2>&1 是將錯誤輸出到標准輸出,如果在控制台調試,也就是屏幕上,方便調試。
有3個默認的i/o,0是標准輸入,一般是鍵盤;1是標准輸出,一般是屏幕了;2是標准錯誤。