Linux 定時任務

2021-09-05 21:04:13 字數 3101 閱讀 1926

實現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...