歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> 關於Linux

Linux下crontab命令的用法

crontab命令

用途

提交、編輯、列出或除去cron作業。

語法

crontab[-e[UserName]|-l[UserName]|-r[UserName]|-v[UserName]|File]

描述

這個crontab命令提交、編輯、列出或除去cron作業。一個cron作業是一個命令,其運行是由cron守護程序在規則的調度間隔執行的。要提交一個cron作業,指定crontab命令用-e標志。crontab命令調用一個編輯會話,允許創建一個crontab文件。在這個文件中,為每個cron創建條目。每個條目必須是一種cron守護程序可接受的格式。要得到創建條目的信息,參閱crontab文件條目格式。

當創建完條目和退出文件後,crontab命令將它復制到/var/spool/cron/crontabs目錄,並把它放到一個文件中,此文件的名稱是當前的用戶名。如果以用戶名命名的文件已存在於crontabs目錄中,crontab命令會覆蓋它。

同樣的,可以通過指定文件參數創建crontab文件。如果此文件已經存在,格式必須是cron守護程序所需要的。如果文件不存在,crontab命令就調用編輯器。如果EDITOR環境變量存在,此命令就調用它指定的編輯器。否則,crontab命令調用vi編輯器。

要列出crontab文件的內容,就指定crontab命令並采用-l標志。要除去存在的文件,采用-r標志。

可選的UserName參數可被crontab文件的所有者或者root用戶來使用,為指定的用戶編輯、列出、除去或驗證cron作業的狀態。如果UserName是無效的,就會產生錯誤消息並退出程序。

如果可選的UserName參數沒有被指定,這個crontab標志對於root用戶和當前用戶可用。

安全性

只有root用戶和crontab文件的所有者可以在-e、-l、-r和-v標志後面使用UserName以編輯、列出、除去或驗證指定用戶的crontab文件。

cron守護程序

這個cron守護程序運行的命令和crontab文件條目是相對應的。如果不重新定向cron作業的輸出為標准輸出或標准錯誤,cron守護程序就會通過電子郵件告知您任何命令輸出或錯誤。如果在crontab文件中指定了不正確的cron作業,這個cron守護程序不運行這個作業。

cron守護程序只在cron守護程序被初始化時檢查crontab文件。當用crontab命令改變crontab文件時,指示變化的消息被發送到cron守護程序。這消除了在規則的調度間隔檢查新的或改變的文件的開銷。

控制使用crontab命令

/var/adm/cron/cron.allow和/var/adm/cron/cron.deny文件控制哪一個用戶可以使用crontab命令。root用戶可以創建、編輯或刪除這些文件。這些文件中的條目是用戶登錄名,每行一個名稱。如果登錄標識和多個的登錄名稱相關聯,這個crontab命令采用第一個在/etc/passwd文件中的登錄名稱,而不管當前實際使用哪一個登錄名稱。而且,要允許用戶啟動cron作業,應該使用chuser命令將/etc/security/user文件中的守護程序屬性設置為TRUE。

以下關於cron.allow文件的一個示例:

root nick dee sarah

如果cron.allow文件存在,只有在文件中出現其登錄名稱的用戶可以使用crontab命令。root用戶的登錄名必須出現在cron.allow文件中,如果這個文件存在的話。系統管理員可以明確的停止一個用戶,通過使用crontab命令,同時在cron.deny文件中列出用戶的登錄名。如果只有cron.deny文件存在,任一名稱沒有出現在這個文件中的用戶可以使用crontab命令。

如果以下一個條件成立,用戶將不能使用crontab命令:

cron.allow文件和cron.deny文件不存在(只允許root用戶)。 

cron.allow文件存在,但用戶的登錄名並不列在其中。 

cron.deny文件存在,並且用戶的登錄名列在其中。

如果cron.allow和cron.deny文件都不存在,只有被root用戶授權的人可以用crontab命令提交一個作業。

crontab文件條目格式

一個crontab文件包含每個cron作業的條目。條目由換行字符分開。每個crontab文件條目包括6個字段,它們被空格或制表符以以下格式分開:

minute hour day_of_month month weekday command

這些字段接收以下值:

minute 0到59 hour 0到23 day_of_month 1到31 month 1到12 weekday 0到6(星期日到星期六) command shell命令

必須為每個字段指定一個值。除了command字段,這些字段可以包含以下內容:

指定范圍內的一個數。要在5月運行一個命令,在month字段指定5。 

兩個被破折號分開的數目表明了包含的范圍。要從星期二到星期五運行cron作業,把2-5放到weekday字段中。 

由逗號隔開的數字列表。要在一月第一天和最後一天的運行命令,在day_of_month字段中可指定1,31。 

*(星號),意味著所有的允許值。要每個小時運行一個作業,在小時字段指定一個星號。

注:任一字符前如有一個反斜槓符號(包括%)會引起字符被字面上的處理。天的規范是由兩個字段(月的天和星期的天)組成的。如果指定兩者都為元素的一個列表,這兩個字段均被包含在其中。例如,如下條目:

001,15*1command

將在每個月的第一天和第十五天運行command,還有每個星期一。要僅在一個字段中指定天,另一字段應包含*。

指定命令

這個cron守護程序運行命名於所選日期和時間的第六個字段中的字段。如果包含一個%(百分號)在第六字段,cron守護程序像命令調用一樣處理所有的任務,並使所有的後續任務在標准輸入上可用,除非轉義百分號(\%)。空行和第一個非空字符是編號標記(#)將被忽略。如果命令含有反斜槓()的參數,反斜槓前應加另一個反斜槓。

注:shell只運行該命令字段的第一行。所有其他的行作為標准的輸入對於命令可用。

cron守護程序從HOME目錄中啟動一個子shell。如果調度一個命令運行,這時您尚未登錄,並且希望在.profile文件中的命令運行,這個命令必須明確的讀取您的.profile文件。

cron守護程序為每個shell提供了一個缺省的環境,定義了HOME,LOGNAME,SHELL(=/usr/bin/sh)和PATH(=/usr/bin)。

標志 -eUserName 編輯用戶的crontab文件的副本,或者,如果一個有效的UserName的crontab文件不存在則創建一個空的文件進行編輯。當編輯完成後,文件被到crontab目錄作為用戶的crontab文件。 -lUserName 列出用戶的crontab文件。 -rUserName 從crontab目錄除去用戶的crontab文件。 -vUserName 列出用戶cron作業的狀態。 安全性

審計事件:如果審計子系統已經被正確的配置和啟用,crontab守護程序就會當每次執行命令時產生以下審計記錄(或事件):

事件 信息 CRON_JobRemove 列出哪一個用戶除去了cron作業和除去的時間。 CRON_JobAdd 列出哪一個用戶添加了cron作業和添加的時間。

有關如何正確選擇和分組審計事件以及如何配置審計事件數據收集的更詳細信息,請參閱《安全性》中的SettingupAuditing。

退出狀態

該命令返回以下退出值:

0 成功完成。 >0 發生錯誤。 示例

要將名為mycronjobs的文件復制到/var/spool/cron/crontabs目錄中,輸入以下內容:

 crontabmycronjobs

文件將復制為:

 /var/spool/cron/crontabs/<username>

其中<username>是您當前的用戶名。 

要每小時將時間寫入控制台(以小時的形式),請輸入:

0****echoThehouris`date`。>/dev/console

要在每個星期一、星期三和星期五的6:30a.m.運行calendar命令,請輸入:

306**1,3,5/usr/bin/calendar

要在一年中每天6:30運行calendar命令,請輸入:

306***/usr/bin/calendar

要在八月每天午夜運行名為maintenance的腳本,請輸入:

00*8*/u/harry/bin/maintenance

為命令的標准輸入定義文本,請輸入:

016*125/usr/sbin/wall%HAPPYHOLIDAY!%Rememberto turninyourtimecard.

在%(百分號)之後定義wall命令的標准輸入的文本:

HAPPYHOLIDAY!  Remembertoturninyourtimecard.

文件 /var/adm/cron/FIFO 指定的管道,當用crontab或at命令提交新作業時,它將消息發送到cron守護程序。 /var/spool/cron/crontabs 指定crontab緩沖池區域。 /var/adm/cron/cron.allow 指定用戶列表,這些用戶被允許訪問crontab命令。 /var/adm/cron/cron.deny 指定用戶列表,這些用戶不被允許訪問crontab命令。
Copyright © Linux教程網 All Rights Reserved