歡迎您光臨本站 註冊首頁

linux cron詳細用法

←手機掃碼閱讀     火星人 @ 2014-03-09 , reply:0
在Redhat Linux里,cron的相關配置文件:
/etc/crontab 記錄環境變數(SHELL,PATH,MAILTO,HOME)和系統預先制定的cron任務(cron.hourly/daily/weekly /monthly).
(當cron任務無法執行時,可以檢查一下這裡的環境變數和命令路徑) 註:使用crontab命令是對用戶級任務進行配置,而編輯/etc/crontab文件是對系統級任務進行配置.
/etc/cron.deny 被記錄在此的用戶不能提交cron任務
/etc/cron.allow 被記錄在此的用戶可以提交cron任務
(這兩個文件不存在 時,只有root有提交cron任務的許可權)
/etc/cron.d/,/etc/cron.daily/、cron.hourly/、 /cron.monthly/ 存放系統預先制定的cron任務,如下圖所示:
/var/spool/cron/ 所有用戶的cron任務,與用戶名相對應
/var/log/cron cron的日誌信息 cron的配置文件稱為crontab,是“cron table”的簡寫.cron在三個地方查找crontab文件:/etc/crontab,/etc/cron.d/,/var/spool /cron.
crontab文件的格式:
minute hour day month weekday [username] command 總共六項: 注意事項: 1> 這些項不能為空,都必須填入. 2> 如果用戶不需要指定其中的幾項,那麼可以使用統配符號“ * ”表示任何時間. 3> 每個時間段都可以指定多個值,它們之間用逗號“ , ”間隔,還可以用“ - ”指定範圍,如:5,8 5-8 */5表示每5個單位時間.

4> command應該給出絕對路徑. 5> 用戶必須有運行所對應command或程序的許可權.
minute 分鐘 0-59
hour 小時 0-23
day 日期 1-31
month 月份 1-12
weekday 星期幾 0-6(0代表星期天)
這些和時間相關的欄位由 空格分隔,每個欄位必須指定一個值:
*(星號),意味著所有的允許值
一個整數,精確匹配
兩個被破折號分開的整數,表示範圍
多 個被逗號分開的整數或範圍,表示匹配列出的這些值
/n 表示步長,範圍/n
其中“天”由day和weekday確定,都匹配
其 中:星號可以匹配所有字元;一個整數必須精確匹配;用短劃線隔開的兩個整數,他們匹配的是值的範圍;
用逗號隔開的整數或者範圍,匹配任何被列到的 值.
例如: 45 10 * * 1-5 上午10:45從周一到周五 不要把星號放在第一個欄位,除非你想這個命令每分鐘都執行.
weekday與day若同時指定,則滿足二者之一即被執行.
例 如:0,30 * 13 * 5 星期五每半小時,以及每月13號每半小時
30 2 * * 1 (cd /users/joe/project; make)

20 1 * * * find /tmp -atime 3 -exec rm -f { } ';'
每天凌晨1:20刪除/tmp目錄中的3天內未被訪問的所有文件
55 23 * * 0-3,6 /staff/trent/bin/acct-script
除了星期四、五外每天23:55 運行acct-script

crontab命令
crontab [-u user] [-l|-r|-e]
-l 列出用戶的cron任務
-r 刪除cron任務
-e 編輯cron任務
-i 刪除前提示


註:不帶參數的crontab命 令將試圖從標準輸入讀取crontab的內容.在這個模式下,如用Control-D來退出的話,會刪除整個crontab內容.應使用Control- C來退出.
crontab [-u user] filename
從文件導入crontab任務.

command就是 要執行的sh命令,可以是任意有效的shell命令,並且不應該加引號.cron 認為command一直是到這一行的末尾,它可以包含空格或製表符.
cron 使用百分號(%)來表示command欄位的換行.只有第一個百分號前的文本才會包含在實際命令中,其餘行則作為該命令的標準輸入.
例如:
echo The time is now `date` > /dev/console
write garth %Hi Garth % Remember to get a job.
cd /etc; /bin/mail -s "password file" evi < passwd
管理crontab
crontab filename 將filename安裝為crontab文件,它將替代crontab文件以前版本.
crontab -e 檢出一個crontab的一個副本,用編輯器打開,然後將其重新提交給crontab目錄(/var/spool/cron/'username').
crontab -l 將crontab中內容列在標準輸出上.
crontab -r 刪除crontab.
不帶命令行的 crontab將試圖從他自己的標準輸出中讀取crontab內容.如果意外進入,不要試圖使用Ctrl-D退出,那樣會刪除整個crontab內容,而 要使用Ctrl-C退出.
對於root,有這樣的命令:crontab -u loki -r 刪除屬於loki的crontab文件. 控制使用 crontab 命令
/etc/cron.allow /etc/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提交crontab文件.其默認的用戶配置文件是空的/etc/cron.deny文件 .如果沒有這兩個文件的話,只有root才能提交crontab.
重要的是,訪問控制是由crontab而不是cron來實現的.如果某用戶可通 過其他方式把crontab秘密轉移到適合目錄中去,那麼cron就會盲目地執行該文件中的命令.
Linux預安裝好的crontab項主要在/etc/cron.d下,如果想使某項不起作用, 可以註釋掉.
另外,還有/etc/cron.daily 每天運行一次的腳本; /etc/weekly 每周運行一次的腳本. crond的管理
service crond {start|stop|status|reload|restart|condrestart}
/etc/init.d/crond {start|stop|status|reload|restart|condrestart}
如果想讓crond開機行動啟動,可以在此/etc/rc.d/rc.local腳本的加入/sbin/service crond start 即可.

常見用途:
清理文件系統
find / -xdev -name core -atime 7 -exec rm -f { } ';'


刪除一星期都沒訪問過的core映象文件(程序崩潰時產生的映象文件).
find / -xdev -atime 3 '(' -name '#*' -o -name '#*' -o -name '*.CKP' -o -name '*~' -o -name '.nfs~' ')' -exec rm -f { } ';'
刪除以 #,.#或nfs開頭的,或者是以 ~ 以及.CKP結尾的文件,還有3天未被訪問的文件,不同類型的臨時文件和編輯器的備份文件,都是這一模式的典型代表.
cd /tmp ; find . ! -name . ! -name lost found -type d -mtime 3 -exec /bin/rm -rf { } ';'
遞歸刪除/tmp下的72小時未修改的所有子目錄./tmp下的普通文件會在系統啟動時被系統啟動腳 本刪除,但有些系統不會刪除目錄.


[火星人 ] linux cron詳細用法已經有413次圍觀

http://coctec.com/docs/linux/show-post-50943.html