歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux基礎知識 >> linux系統任務調度命令crontab

linux系統任務調度命令crontab

日期:2017/3/2 17:15:53   编辑:Linux基礎知識

循環重復的執行計劃任務、有計劃性的執行任務,像這種任務,在linux系統中就有cron命令來完成。

linux系統下的任務調度分為兩類:系統任務調度和用戶任務調度。

/etc/crontab文件就是系統任務調度的配置文件:

[root@centos ~]# cat /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/

# 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

[root@centos ~]#

前四行是配置crond任務運行的環境變量,第一行SHELL變量指定了使用/bin/bash,第二行PATH變量指定了系統執行命令的路徑。第三行MAILTO變量指定了cron的任務執行信息將發送給root用戶,第四行HOME變量指定了在執行命令或者腳本時使用的主目錄,

用戶任務調度:用戶頂起要執行的工作,比如用戶數據備份、定時郵件提醒等。用戶可以使用crontab工具來定制自己的計劃任務。所有用戶定義的crontab文件都被保存在/var/spool/cron/目錄中,其文件名和用戶名保持一致。

文件:

/etc/cron.deny #該文件中所列用戶不允許使用crontab命令

文件:

/etc/cron.allow #該文件中所列用戶允許使用crontab命令

文件:

/var/spool/cron/ #所有用戶crontab文件存放的目錄,以用戶名命名

crontab的使用格式:minute hour day month week command

如果minute使用*表示,則代表每分鐘,可取0-59之間的整數。一次類推。

command表示要執行的命令,可以是系統命令,也可以是自己編寫的腳本文件。

08090352-4e0aa3fe4f404b3491df384758229be1

在以上各個字段中,還可以使用以下特殊字符:

星號(*):代表所有可能的值,例如month字段如果是星號,則表示在滿足其它字段的制約條件後每月都執行該命令操作。

逗號(,):可以用逗號隔開的值指定一個列表范圍,例如,“1,2,5,7,8,9”

中槓(-):可以用整數之間的中槓表示一個整數范圍,例如“2-6”表示“2,3,4,5,6”

正斜線(/):可以用正斜線指定時間的間隔頻率,例如“0-23/2”表示每兩小時執行一次。同時正斜線可以和星號一起使用,例如*/10,如果用在minute字段,表示每十分鐘執行一次。

crond服務是集成在系統上的,哪怕是安裝最小化系統,這項服務也會被安裝上。

crontab 命令格式: crontab [ –u user ] file

crontab [ -u user ] [ –e ] [ –l ] [ –r ] [ –i ]

crontab –u jack 表示使用jack這個用戶來運行命令

-e參數的意思是“編輯” -l參數的含義是“查看計劃任務” -r參數的含義是“刪除計劃任務”這個參數會刪除/var/spool/cron目錄下的所有幾乎任務。-i參數的意思是在刪除用戶的crontab文件是給確認提示。給出交互提示。

實例: 0 4 1 jan * /etc/int.d/smb restart #1月1號早上4點整重啟smb服務。

01 * * * * root run-parts /etc/cron.hourly #每小時以root用戶的身份執行/etc/cron.hourly目錄下的所有腳本。 注:如果去掉run-parts參數的話,目錄後面就必須跟上某個具體的腳本,而不能是某個文件夾。

注意:

1. 如果我們創建了一個crontab文件,但是任務無法執行,而手動執行這個任務是沒有問題的。這種情況下一般是由於在crontab文件中沒有配置環境變量引起的。

2. 注意清理系統用戶的郵件日志,每條任務調度執行完畢,系統都會將任務輸出信息通過電子郵件傳遞給用戶,改信息一般保存在/var/spool/mail目錄下。這樣日積月累,這個目錄下的日志信息會非常大,可能會影響系統的正常運行。因此將每條任務執行後進行重定向非常重要。

例:0 */3 * * * /usr/local/apache2/apachectl restart >/dev/null 2>&1

>/dev/null的意思是將輸出信息清除,2>&1的意思是將標准錯誤重定向到標准輸出,而標准輸出已經重定向到了/dev/null中,所以無論是標准輸出還是標准錯誤都會重定向到/dev/null中。

另外,新建的cron job不會立馬執行,至少要等兩分鐘才能執行,如果重啟cron才會馬上執行。

當crontab突然失效時,可以重啟cron服務;或者查看日志:tail -f /var/log/cron

Copyright © Linux教程網 All Rights Reserved