實現linux定時任務有:cron、anacron、at等,這裡主要介紹cron服務。
名詞解釋:
cron是服務名稱,crond是後台程序,crontab則是定製好的計畫任務表。
軟體包安裝:
要使用cron服務,先要安裝vixie-cron軟體包和crontabs軟體包,兩個軟體包作用如下:
vixie-cron軟體包是cron的主程式。
crontabs軟體包是用來安裝、卸裝、或列舉用來驅動 cron 守護程序的**的程式。
檢視是否安裝了cron軟體包: rpm -qa|grep vixie-cron
檢視是否安裝了crontabs軟體包:rpm -qa|grep crontabs
如果沒有安裝,則執行如下命令安裝軟體包(軟體包必須存在)
rpm -ivh vixie-cron-4.1-54.fc5*
rpm -ivh crontabs*
yum install vixie-cron
yum install crontabs
檢視crond服務是否執行:
pgrep crond 或
/sbin/service crond status 或
ps -elf|grep crond|grep -v "grep"
crond服務操作命令:
/sbin/service crond start //啟動服務
/sbin/service crond stop //關閉服務
/sbin/service crond restart //重啟服務
/sbin/service crond reload //重新載入配置
cron是乙個linux下的定時執行工具,可以在無需人工干預的情況下執行作業。由於cron 是linux的內建服務,但它不自動起來,可以用以下的方法啟動、關閉這個服務:
/sbin/service crond start //啟動服務
/sbin/service crond stop //關閉服務
/sbin/service crond restart //重啟服務
/sbin/service crond reload //重新載入配置
你也可以將這個服務在系統啟動的時候自動啟動:
在/etc/rc.d/rc.local這個指令碼的末尾加上:
/sbin/service crond start
現在cron這個服務已經在程序裡面了,我們就可以用這個服務了
以linux下定時備份mysql為例說明下
寫乙個簡單的mysql備份shell指令碼
vi#!/bin/sh
da=`date +%y%m%d%h%m%s`
mysqldump -u root -pdongjj --all-database>/root/mysqlbakup/$da
儲存為 mysqlbak.sh
然後crontab-e
0 3 * * * /root/mysqlbak.sh
儲存退出
相關命令----------------
crontab file [-u user]-用指定的檔案替代目前的crontab。
crontab-[-u user]-用標準輸入替代目前的crontab.
crontab-1[user]-列出使用者目前的crontab.
crontab-e[user]-編輯使用者目前的crontab.
crontab-d[user]-刪除使用者目前的crontab.
crontab-c dir- 指定crontab的目錄。
crontab檔案的格式:m h d m d cmd.
m: 分鐘(0-59)。
h:小時(0-23)。
d:天(1-31)。
m: 月(1-12)。
d: 一星期內的天(0~6,0 表示星期天)
除了數字還有幾個個特殊的符號就是"*"、"/"和"-"、",",*代表所有的取值範圍內的數字,"/"代表每的意思,"*/5"表示每5個單位,"-"代表從某個數字到某個數字,","分開幾個離散的數字。
每次編輯完某個使用者的cron設定後,cron自動在/var/spool/cron下生成乙個與此使用者同名的檔案,此使用者的cron資訊都記錄在這 個檔案中,這個檔案是不可以直接編輯的,只可以用crontab -e 來編輯。cron啟動後每過乙份鐘讀一次這個檔案,檢查是否要執行裡面的命令。因此此檔案修改後不需要重新啟動cron服務。
檢視crontab 執行的日誌,可以在/var/log/cron* 檢視,或者 0 3 * * * /root/mysqlbak.sh >/var/log/mysqlbak.log 2>&1 把日誌定向出來檢視。
當然定時任務也可以自行制定配置檔案
可以把他放到/etc/cron.d 中
使用者想要建立迴圈型工作排程時,使用的是 crontab 這個指令啦~不過,為了安全性的問題, 與 at 同樣的,我們可以限制使用 crontab 的使用者帳號喔!使用的限制資料有:
與 at 很像吧!同樣的,以優先順序來說, /etc/cron.allow 比 /etc/cron.deny 要優先, 而判斷上面,這兩個檔案只選擇乙個來限制而已,因此,建議你只要保留乙個即可, 免得影響自己在設定上面的判斷!一般來說,系統預設是保留 /etc/cron.deny , 你可以將不想讓他執行 crontab 的那個使用者寫入 /etc/cron.deny 當中,乙個帳號一行!
當使用者使用 crontab 這個指令來建立工作排程之後,該項工作就會被紀錄到 /var/spool/cron/ 裡面去了,而且是以帳號來作為判別的喔!舉例來說, dmtsai 使用 crontab 後, 他的工作會被紀錄到 /var/spool/cron/dmtsai 裡頭去!但請注意,不要使用 vi 直接編輯該檔案, 因為可能由於輸入語法錯誤,會導致無法執行 cron 喔!另外, cron 執行的每一項工作都會被紀錄到 /var/log/cron 這個登入檔中,所以囉,如果你的 linux 不知道有否被植入木馬時,也可以搜尋一下 /var/log/cron 這個登入檔呢!
參考:#crontab_user
linux定時任務 at定時任務
at命令是一次性定時計畫任務,at的守護程序atd會以後臺模式執行,檢查作業佇列來執行作業。atd守護程序會檢查系統上的乙個特殊目錄來獲取at命令的提交的作業,預設情況下,atd守護程序每60秒檢查一次目錄,有作業時,會檢查作業執行時間,如果時間與當前時間匹配,則執行此作業。注意 at命令是一次性定...
linux定時任務
crontab 設定定時任務 crontab 可以根據分鐘 小時 日期 月份 星期的組合來設定定時任務的自動執行 要使用該服務必須啟動 crond 服務,檢視 crond 服務有沒有啟動,執行命令 servicecrond status 一些任務事例,幫助理解 3020 root back.sh 每...
linux 定時任務
如果想要半夜在linux上備份oracle使用定時命令是最好不過的啦,下面整理了一下linux上的定時任務,可以參考一下 包括一次性的定時at,和長期的定時cron。cron設定 cron長期定時 cron是linux的內建服務,不會自動啟動 service crond start stop sta...