如何讓你的bash 定時執行?可…
阿新 • • 發佈:2019-02-16
一、 使用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檔案