1. 程式人生 > >crontab 中的指定特定的使用者身份來執行相關的命令或者指令碼

crontab 中的指定特定的使用者身份來執行相關的命令或者指令碼

設定cron有兩種方法

(
當啟動linux時,它執行為一個後臺程序。它每分鐘檢查一次相應的配置檔案來了解是否有事件需要得到執行。


有兩組cron配置檔案。一組由一個全域性配置檔案(/etc/crontab)來控制,另一組基於個別使用者使用crontab命令所建立的配置檔案。
)


1、使用crontab命令
crontab -u //指定某個使用者的cron服務
crontab -l //列出某個使用者的cron服務的詳細內容
crontab -r //刪除某個使用者的cron服務
crontab -e //編輯某個使用者的cron服務


crontab -e這個命令,哪個使用者使用了它,那麼系統就會用那個使用者身份執行相關的命令或者指令碼。
所以http://hi.baidu.com/du_liang/blog/item/895bb8dd520c4eaccd1166e5.html文中的*/5 * * * * /sbin/service iptables stop 這樣寫可以,但*/5 * * * * root /sbin/service iptables stop 卻不行...,因為會把root當成命令來看,可用tail /var/log/cron中的日誌對比一下


2、系統的 cron 任務
cron 守護程序在搜尋 /var/spool/cron 目錄下使用者的 crontab 檔案的同時, 還將搜尋 /e tc/crontab 檔案,這個檔案是系統安裝時設定好的自動安排的程序任務的crontab 檔案。這為系統管理員安排 cron 任務提供了方便。


CentOS 預設的 /etc/crontab 檔案的內容為:


SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
# run-parts
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly


/etc/cron.daily、/etc/cron.m onthly、/etc/cron.weekly 和 /etc/cron.hourly 是四個目錄,分別放置系統每天、每個月、每週和每個小時要執行的任務的指令碼檔案。
run-parts 命令的作用是執行指定目錄下的所有可執行檔案(包括程式或指令碼)。


crontab 檔案中的每一行格式為:
minute hour day-of-month month-of-year day-of-week [username] commands
簡化些:
* * * * * [username] commands


其中username(以它的身份執行)是可選的,commands是每次都必須指定的欄位。前面的5個日期欄位如果不指定可以*號代替。


注:run-parts引數表示,執行後面目錄中的所有可執行檔案,如果單獨執行某個指令碼的話,是不需要增加run-parts引數的。]


所以要指定cron的使用者執行身份的話,是在/etc/crontab中,而不是用crontab命令。


相關:
/var/spool/cron/   該目錄下存放所有使用者的cron服務 
/var/log/cron   記錄cron執行的日誌資訊。