[b] crontab命令被用來提交和管理用戶需要周期性執行的任務,與windows下的計劃任務類似。[/b]
[b] (1)用法:[/b][b] 用法: [/b]crontab [-u user] file
crontab [-u user] [ -e | -l | -r ][b] (2)功能:[/b]
[b] 功能: 當安裝完成操作系統後,默認會安裝此服務工具,並且會自動啟動crond進程,crond進程每分鐘會定期檢查是否有要執行的任務,如果有要執行的任務,則自動執行該任務。 [/b] 在固定的間隔時間執行指定的系統指令或 shell script腳本。時間間隔的單位可以是分鐘、小時、日、月、周及以上的任意組合。這個命令非常設合周期性的日志分析或數據備份等工作。
[b] (3)選項參數:[/b] 1) -l 列出當前計時器的設置,查看定時運行的程序
2) -e 編輯該用戶的計時器設置,設置計時器 3) -r 刪除該用戶的計時器設置
4) -u<用戶名稱> 指定要設定計時器的用戶名稱 [b] (4)實例:(此命令用的不常,在此簡要介紹)[/b]
1)每1分鐘執行一次command
* * * * * command
2)每五分鐘執行一次命令
*/5 * * * * command
3)在每天的17:00執行這個命令
00 17 * * * command
4)在8:02,11:02,14:02,17:02,20:02 執行,在8點到20點的時間內,每三個小時執行一下命令
2 8-20/3 * * * command
以後會討論crondtab的幾個用法:
[b] *創建一個新的crontab文件:[/b] 1.進入 /var/spool/cron目錄下(目錄為空表明當前系統內沒有任何Linux計劃任務需要執行)
[root@localhost /]# cd /var/spool/cron [root@localhost cron]# ll 總用量 0[b] *列出crontab文件:[/b]
2.用crontab自帶的命令crontab -l 發現也是沒有任何東西()
[root@localhost cron]# crontab -l no crontab for root
[b] *編輯crontab文件;[/b] 3.如果目錄已經存在指定的文件(文件名為當前用戶名),則crontab -e 命令編輯它,否則創建新的文件。cron服務每分鐘不僅要讀一次/var/spool/cron內的所有文件,還需要讀一次 /etc/crontab,因此我們配置這個文件也能運用cron服務做一些事情。用crontab配置是針對某個用戶的,而編輯/etc/crontab是針對系統的任務。
*/2 * * * * ls -l /home/sunjimeng/Documents > root.txt * * * * * echo "I am MenAngel" > root.txt*刪除crontab文件;
恢復丟失的crontab文件; [b] (5)其他:[/b]
1.什麼是Windows的計劃任務?
在Windows中,系統有一項重要的“計劃任務”功能,通過設置“計劃任務”,你可以將每天或某一天的某個時間需要做的事擬成計劃,到約定的時間,不管你在電腦上進行什麼工作,系統都會提醒你或者啟動你設定好的任務程序。2.crontab的簡介:
crontab命令常見於Unix和類Unix的操作系統之中,用於設置周期性被執行的指令。該命令從標准輸入設備讀取指令,並將其存放於“crontab”文件中,以供之後讀取和執行。該詞來源於希臘語 chronos(χρνο),原意是時間。常,crontab儲存的指令被守護進程激活, crond常常在後台運行,每一分鐘檢查是否有預定的作業需要執行。這類作業一般稱為cron jobs。3.crontab文件:
crontab文件包含送交cron守護進程的一系列作業和指令。每個用戶可以擁有自己的crontab文件;同時,操作系統保存一個針對整個系統的crontab文件,該文件通常存放於/etc或者/etc之下的子目錄中,而這個文件只能由系統管理員來修改。crontab文件的每一行均遵守特定的格式,由空格或tab分隔為數個領域,每個領域可以放置單一或多個數值。 4.Linux下的任務調度
Linux下的任務調度分為兩類:系統任務調度和用戶任務調度。 系統任務調度: 系統周期性所要執行的工作,比如寫緩存數據到硬盤、日志清理等。在/etc目錄下有一個crontab文件,這個就是系統任務調度的配置文件:
[root@localhost /]# 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前三行是用來配置crond任務運行的環境變量。第一行SHELL變量指定了系統要使用哪個shell,這裡是bash;第二行PATH變量指定了系統執行命令的路徑;第三行MAILTO變量指定了crond的任務執行信息將通過電子郵件發送給root用戶,如果MAILTO變量的值為空,則表示不發送任務執行信息給用戶。
*: 表示任何時刻 ,: 表示分割 -:表示一個段,如第二端裡: 1-5,就表示1到5點 /n : 表示每個n的單位執行一次,如第二段裡,*/1, 就表示每隔1個小時執行一次命令。也可以寫成1-23/1.用戶任務調度: 用戶定期要執行的工作,比如用戶數據備份、定時郵件提醒等。用戶可以使用 crontab 工具來定制自己的計劃任務。所有用戶定義的crontab文件都被保存在/var/spool/cron目錄中。其文件名與用戶名一致。
[root@localhost /]# cd /var/spool/cron [root@localhost cron]# ll 總用量 0
/etc/cron.deny 該文件中所列用戶不允許使用crontab命令 /etc/cron.allow 該文件中所列用戶允許使用crontab命令 /var/spool/cron/ 所有用戶crontab文件存放的目錄,以用戶名命名
5.crond服務
1)安裝crontab: yum install crontabs
服務操作說明:
/sbin/service crond start //啟動服務 /sbin/service crond stop //關閉服務 /sbin/service crond restart //重啟服務 /sbin/service crond reload //重新載入配置
查看crontab服務狀態: service crond status
[root@localhost sunjimeng]# service crond status Redirecting to /bin/systemctl status crond.service crond.service - Command Scheduler Loaded: loaded (/usr/lib/systemd/system/crond.service; enabled) Active: active (running) since 五 2016-05-27 23:11:47 PDT; 1 weeks 5 days ago Main PID: 1303 (crond) CGroup: /system.slice/crond.service └─1303 /usr/sbin/crond -n 5月 27 23:11:47 localhost.localdomain systemd[1]: Started Command Scheduler. 5月 27 23:11:47 localhost.localdomain crond[1303]: (CRON) INFO (RANDOM_DELAY... 5月 27 23:11:48 localhost.localdomain crond[1303]: (CRON) INFO (running with... Hint: Some lines were ellipsized, use -l to show in full.
手動啟動crontab服務: service crond start
[root@localhost sunjimeng]# service crond start Redirecting to /bin/systemctl start crond.service
查看crontab服務是否已設置為開機啟動,執行命令: ntsysv
[root@localhost sunjimeng]# ntsysv
輸入上述命令後,centOS彈出下面的頁面:
*加入開機自動啟動: chkconfig –level 35 crond on(以後再介紹) *要把cron設為在開機的時候自動啟動,在 /etc/rc.d/rc.local 腳本中加入 /sbin/service crond start即可。