Linux之定時任務

2021-08-07 15:54:08 字數 3134 閱讀 2426

linux 定時任務

實現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 這個登入檔呢!

linux定時任務 at定時任務

at命令是一次性定時計畫任務,at的守護程序atd會以後臺模式執行,檢查作業佇列來執行作業。atd守護程序會檢查系統上的乙個特殊目錄來獲取at命令的提交的作業,預設情況下,atd守護程序每60秒檢查一次目錄,有作業時,會檢查作業執行時間,如果時間與當前時間匹配,則執行此作業。注意 at命令是一次性定...

Linux之定時任務

可以改為如下 僅供參考 shell bin bash path sbin bin usr sbin usr bin mailto root 如果出現錯誤,或者有資料輸出,資料作為郵件發給這個帳號 home 使用者執行的路徑,這裡是根目錄 run parts 01 root run parts etc...

Linux之定時任務

crontab命令用於設定週期性被執行的指令。該命令從標準輸入裝置讀取指令,並將其存放於 crontab 檔案中,以供之後讀取和執行。1.檢查是否安裝了crontab,如果提示未安裝請自行安裝,crontab安裝包在系統光碟裡面的pacekage資料夾crontabs安裝包。rpm qa grep ...