在服務器安裝好系統及相關服務以後,對於系統的配置、服務的配置、數據的管理以及服務器的操做權限管理就變的尤其重要。由於,涉及到服務器的各項安全(如:登陸、操做)。shell
crontab 命令用來打開 cron 表進行編輯。centos
定時任務:顧名思義,就是按期執行某項操做或者某種行爲。像Windows系統一樣它也有定時任務服務。緩存
在Linux系統中,crond是Linux系統中用來按期執行命令、腳本或指定程序的一種服務。定時任務通常有如下兩種用途:安全
Linux下的任務調度分爲兩類:系統任務調度和用戶任務調度bash
系統任務調度:系統週期性所要執行的工做,好比寫緩存數據到硬盤、日誌清理等。在/etc/目錄下有一個crontab文件,這個就是系統任務調度的配置文件。服務器
/etc/crontab 文件內容以下運維
[root@centos7 ~]# 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/crontab分爲6段,以空格分隔。前5段爲時間格式,第6段是所需執行的命令。詳細的說明:測試
minute #分鐘,能夠是從0到59之間的任何整數 hour #小時,能夠是從0到23之間的任何整數 day #日期,能夠是從1到31之間的任何整數 month #月份,能夠是從1到12之間的任何整數 week #星期,能夠是從0到7之間的任何整數,這裏的0或7表明星期日 command #執行的命令,能夠是系統命令,也能夠是本身編寫的腳本文件
在上述的配置字段中,還會使用到下面的特殊字符centos7
*(星號) #表示全部值。好比在第一段中若是使用*,則表示在知足其餘條件的同時每分鐘都執行後面的命令操做。 ,(逗號) #用逗號分隔的值表示指定的一個範圍。好比在第四段使用1,3,5,7,則表示在第1,3,5,7月的含義。 —(中槓) #表示一個範圍。好比在第二段使用0-8,則表示0點到8點這一區間範圍。 /(正斜線) #表示一個時間的間隔頻率。好比在第一段使用*/5,則表示每間隔5分鐘的含義。
crontab [-u user] file crontab [-u user] [-l | -r | -e] [-i] [-s]
-e #編輯該用戶的計時器 -l #列出該用戶的計時器 -r #刪除該用戶的計時器 -u<用戶名稱> #指定要設定計時器的用戶名稱
在平常實際生產、測試環境中,書寫定時任務是須要遵照必定的規範、規則的。筆者根據本身實際生產環境書寫經驗,總結以下:3d
實際生產、測試環境,對於定時任務的配置也是須要有必定操做規範的,具體以下:
對於定時任務的具體實例及各種操做,可參考官方文檔說明。讀者也可在本身的實驗環境進行書寫、配置,本章節就不作過多贅述。
以上的內容源自民工哥的新書《 Linux 系統運維指南 從入門到企業實戰 》
查看當前登陸用戶下的定時任務狀況
[root@centos7 ~]# crontab -l no crontab for root
每小時的第5和第15分鐘執行
5,15 * * * * command_name
在上午9點到11點的第5和第15分鐘執行
5,15 9-11 * * * command_name
每隔3天的上午9點到11點的第5和第15分鐘執行
5,15 9-11 */3 * * command_name
每一個星期一的上午9點到11點的第5和第15分鐘執行
5,15 9-11 * * 1 command_name
每個月一、十一、21日的14:45重啓httpd
45 14 1,11,21 * * /etc/init.d/httpd restart
每週6、週日的1:10重啓smb
10 1 * * 6,0 /etc/init.d/httpd restart
每小時執行/etc/scripts/test.sh這個腳本
01 * * * * /etc/scripts/test.sh