linux定時/計划任務


計划任務,就是規划好的會在預計的時間去執行的任務。在linux系統中使用crond服務來完成這項工作,我們可以把cron設置為開機時自動啟動。cron啟動后,它會讀取它的所有配置文件(全局性配置文件/etc/crontab,以及每個用戶的計划任務配置文件),然后cron會根據命令和執行時間來按時來調用度工作任務。

0、crond計划任務相關的命令、配置

名稱 類型 說明
crontab 命令 crontab命令,可以創建、編輯、刪除某個用戶的定時任務
/etc/crontab 文件 系統計划任務的全局配置文件
/var/spool/cron/ 目錄 存放以用戶名命名的用戶計划任務配置文件,通過crontab命令編輯
/etc/cron.deny 文件 設置哪些用戶不能使用crontab功能
/etc/cron.hourly/ 目錄 存放每個小時執行一次的腳本
/etc/cron.daily/ 目錄 存放每天執行一次的腳本
/etc/cron.monthly/ 目錄 存放每月執行一次的腳本
/etc/cron.weekly/ 目錄 存放每周執行一次的腳本
/etc/cron.d/ 目錄 系統自動定期需要執行的任務文件

注意:
1、通過crontab命令添加某個用戶的計划任務后,會在/var/spool/cron目錄下生成以該用戶名為名稱的文件,crontab命令編輯的就是該文件。
2、crond服務每分鍾不僅要讀一次/var/spool/cron內的所有文件,還需要讀一次/etc/crontab,因此我們配置這個文件也能運用 crond服務做一些事情。用crontab命令配置是針對某個用戶的,而編輯/etc/crontab是針對系統的任務。

1、查看系統是否安裝了crondtab

rpm -qa|grep crontab

2、查看是否啟動了crond服務

ps -ef|grep crondservice crond status

3、如何啟停crond服務

  • 啟動
    /etc/init.d/crond startservice crond start
  • 停止
    /etc/init.d/crond stopservice crond stop
  • 重啟
    /etc/init.d/crond restart
  • 重新載入配置文件(一般設置計划任務后執行,可以立即生效,不用等系統去讀配置文件)
    /etc/init.d/crond reload

4、設置crond服務開機自啟動

chkconfig crond on

5、crontab命令使用說明

usage:  crontab [-u user] file
        crontab [-u user] [ -e | -l | -r ]
                (default operation is replace, per 1003.2)
        -e      (edit user's crontab)  編輯用戶計划任務
        -l      (list user's crontab)  列出用戶的計划任務的詳細內容
        -r      (delete user's crontab)  刪除用戶的計划任務(指刪除該用戶的所有計划任務,強烈建議使用-ir)
        -i      (prompt before deleting user's crontab) 刪除用戶的計划任務前進行提示
        -s      (selinux context)

示例1:編輯當前登錄用戶的計划任務
crontab -e
示例2:列出test用戶的計划任務
crontab -l test -e

6、計划任務文件的格式

*    *    *    *    *    command
分    時     天    月    周    要執行的命令
符號 說明
表示分鍾,可以是0~59之間的任意整數
表示小時,取值范圍[0~23]
取值范圍[1~31]
取值范圍[1~12]
取值范圍[0~7],0或7代表星期日
command 要執行的命令,可以是系統命令,也可以是自己編寫的腳本
* 表示每的意思,例如分的位置為*,表示每分鍾都要執行,表示0~59所有值
分隔符,當對應域取多個值時使用,例如分鍾域的“1,3”表示每小時的1分和3分鍾執行計划任務
- 表示時間范圍,例如2-6表示"2,3,4,5,6"
/ 可以用來指定時間的間隔,例如“*/5”用在分鍾域時表示每5分鍾執行依次

示例1:每天0點0分時,執行test腳本
0 0 * * * test.sh
示例2:每3小時執行一下test腳本
* */3 * * * test.sh
示例3:周一到周五的0點0分執行test腳本
0 0 * * 1-5 test.sh


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM