linux 定時任務詳解 按秒設定

2021-06-25 21:42:37 字數 2893 閱讀 9303

實現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個單位,"-"代表從某個數字到某個數字,","分開幾個離散的數字。

這裡時間只是到分,有兩種方案可以按秒來執行,如下: 

第一種方案,當然是寫乙個後台執行的指令碼一直迴圈,然後每次迴圈sleep一段時間。

while true ;do

command

sleep xx //間隔秒數

done

第二種方案,使用crontab。

我們都知道crontab的粒度最小是到分鐘,但是我們還是可以通過變通的方法做到隔多少秒執行一次。

以下方法將每20秒執行一次

crontab -e 

* * * * * /bin/date

* * * * * sleep 20; /bin/date 

* * * * * sleep 40; /bin/date 

說明:需要將/bin/date更換成你的命令即可

這種做法去處理隔幾十秒的定時任務還好,要是每1秒執行一次就得新增60條記錄。。。如果每秒執行還是用方案一吧。

每次編輯完某個使用者的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 把日誌定向出來檢視。

linux設定定時任務

service crond status如果滅有,需要確認是否安裝 crontab l能識別就說明已經安裝,然後沒有安裝的話進行安裝,步驟如下 1.安裝crontab root centos yum install vixie cron root centos yum install crontab...

LINUX 定時任務設定

為當前使用者建立cron服務 鍵入 crontab e 編輯crontab服務檔案 例如 檔案內容如下 2 bin sh home admin jiaoben buy deletefile.sh 儲存檔案並並退出 2 bin sh home admin jiaoben buy deletefile....

linux設定定時任務

crontab相關服務 service crond status 檢視crontab服務狀態 service crond start 啟動服務 service crond reload 重新載入配置 service crond restart 重啟服務 service crond stop 關閉服務...