Contents ...
udn網路城邦
linux的定時計劃任務Crontab
2015/07/06 17:54
瀏覽771
迴響0
推薦0
引用0
1、什麽是crontab
crontab命令常見於Unix和類Unix的操作系統之中,用於設置周期性被執行的指令。該命令從標準輸入設備讀取指令,並將其存放於“crontab”文件中,以供之後讀取和執行。該詞來源於希臘語 chronos(χρνο),原意是時間。通常,crontab儲存的指令被守護進程激活, crond常常在後臺運行,每一分鐘檢查是否有預定的作業需要執行。這類作業一般稱為cron jobs。
計劃任務分2種:
1、  例外性:按一定的周期循環來執行工作,如每月發薪水、每天一次的工作報告、每天需要的打卡等等;
2、  臨時性:指定時間執行的命令,這次做完下次不必做的,如領導檢查工作等;
    這些計劃任務的工作 Linux也都可以幫助我們,如:每天早6:00要叫我起床(當然是通過音頻設備了);下班之前發送一份Email給自己,提醒別忘記發日報等;
對於周期性的任務用cron命令;    -- 周期性計劃任務
對於臨時性的任務用 at 命令;      -- 一次性計劃任務
at命令:在指定的時間執行指定的命令,執行完之後就從系統中取消該命令;
cron命令:在指定的時間周期性的執行指定的命令;

安裝crontab:
     yum install crontabs
說明:
     /etc/init.d/crond start啟動服務
     /etc/init.d/crond stop 關閉服務
     /etc/init.d/crond restart        重啟服務
     /etc/init.d/crond reload         重新載入配置
 
查看crontab服務狀態:       /etc/init.d/crondd status
 
查看crontab服務是否已設置為開機啟動,執行命令:ntsysv
 
加入開機自啟動:         chkconfig –level 35 crond on

2、crontab命令

使用權限:
        root用戶和crontab文件的所有者
語法:
        crontab [-e [UserName]|-l [UserName]|-r [UserName]|-v [UserName]|File ]
說明:
        crontab 是用來讓使用者在固定時間或固定間隔執行程序之用,換句話說,也就是類似使用者的時程表。-u user 是指設定指定 user 的時程表,這個前提是你必須要有其權限(比如說是 root)才能夠指定他人的時程表。如果不使用 -u user 的話,就是表示設定自己的時程表。
參數:
        -e [UserName]: 執行文字編輯器來設定時程表,內定的文字編輯器是 VI,如果你想用別的文字編輯器,則請先設定 VISUAL 環境變數來指定使用那個文字編輯器(比如說 setenv VISUAL joe),編輯定時任務
        -r [UserName]: 刪除目前的時程表         刪除定時任務
        -l [UserName]: 列出目前的時程表查詢定時任務
        -v [UserName]:列出用戶cron作業的狀態 查看定時任務的執行狀態或過程

crontab命令格式:
基本格式:    *    *    *    *    *    command
    分   時   日   月   周     命令
         第1列表示:分鐘1~~59 每分鐘用*或*/1表示
         第2列表示:小時1~~23  (0 表示0點)
第3列表示:日期1~~31
         第4列表示:月份1~~12
         第5列表示:星期0~~6   (0 表示 星期天)
         第6列表示:運行的命令

wKiom1V0-gfBL7syAAHWdnAArFs022.jpg
crontab命令特殊符號:
wKioL1V0-6mhxSflAAGhR_wnkaI596.jpg
wKiom1V0-geyvqkOAAFZpBsaPp0065.jpg

3、案例
30 21 * * * /etc/init.d/nginx restart    每晚21:30 重啟nginx
45 4 1,10,22 * * /etc/init.d/nginx restart       每月1、10、22日的4:45分 重啟nginx
10 1 * * 6,0/etc/init.d/nginx restart  每周六日的1:10 重啟nginx
0,30 18-23 * * * /etc/init.d/nginx restart         18點至23點之間每隔30分鐘重啟nginx
0 23 * * 6 /etc/init.d/nginx restart     每周六的23點重啟nginx
* */1 * * * /etc/init.d/nginx restart    每一小時重啟nginx
* 23-7/1 * * * /etc/init.d/nginx restart  晚上23點到早上7點之間,每小時重啟nginx
0 11 4 * mon-wed /etc/init.d/nginx restart         每月4號的周一到周三 11點重啟nginx
0 4 1 jan * /etc/init.d/nginx restart    一月1號的4點重啟nginx
*/30 * * * * /usr/sbin/ntpdate 210.72.145.20       每30分鐘同步一次時間
全站分類:知識學習 科學百科
自訂分類:不分類
上一則: Linux時間函數
下一則: Linux的TCP之shutdown和close系統調用

限會員,要發表迴響,請先登入