1. 程式人生 > >如何讓你的bash 定時執行?可…

如何讓你的bash 定時執行?可…

一、 使用crond監控程式執行程式 1. 使用cron來定期執行任務 使用crond (cron監控程式)來定期執行一些任務,比如備份日誌、資料庫、把日誌傳送到自己郵箱等等操作都可以又定期執行程式來完成。 crond是個指令碼,每次Linux啟動的時候都自動起到該指令碼,該指令碼是 /etc/rc.d/init.d 下面的,每次系統啟動的時候就自動會啟動該目錄下 的指令碼。 cron有兩個配置檔案,一個/etc/crontab,是一個全域性配置檔案,一組是crontab命令生成生成的配置檔案,是屬於使用者級的。 一般對管理員來說,只要使用全域性配置的/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 我們稍微來分析一下這個檔案: 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 大家看到裡面的“*”一定覺得很奇怪,下面我們句稍微來了解一下cron的語法: 上面指令碼中的時間是從左到右的,分別列出了五個欄位,我們看下面的表: ------------------------------------------------ 欄位            取值範圍 ------------------------------------------------ Minute          0 ~ 59 Hour            0 ~ 23,其中0是午夜,20是晚上8點 Day             1 ~ 31 Month           1 ~ 12 Day of week     0 ~ 7,其中0和7是表示星期天 ------------------------------------------------ 任何欄位中的星號是萬用字元,例如,如果第一個欄位包括星號,則特定若無其事在可能的每一分鐘執行。如果要指定時間範圍,比如上午8點到 下午4點,則可以見第二個欄位設定為8~16。如果要隔一天執行任務,則可以將第三個欄位設定為*/2。可以看出,如果五個欄位(minute、hour 、day、month、day of week) 之後,cron中的每個欄位就沒什麼神祕之處了。 2. 使用者自己的cron 使用者也可以計劃使用者自己的cron任務,比如他想要在半夜整理他的檔案,然後傳送郵件給自己,只要這個使用者他沒有在/etc/cron.deny表中, 就可以使用crontab -e命令來啟動自己的cron檔案。 3. 對cron的訪問控制 預設情況下,所有使用者都能訪問cron工具,要對cron進行訪問控制,則可以生成/etc/cron.allow與/etc/cron.deny檔案。 (1)這兩個檔案都不存在時,每個使用者都可以訪問cron工具] (2)存在/etc/cron.allow檔案時,則只有cron.allow檔案中允許的使用者才能訪問cron工具,如果也有/etc/cron.deny檔案,則忽略cron.deny檔案