定時執行命令Crontab

2021-07-28 19:21:28 字數 2445 閱讀 1523

一、linux下的任務排程

linux下的任務排程分為兩類:系統任務排程和使用者任務排程。

系統任務排程:系統週期性索要執行的工作,比如寫快取資料到硬碟、日誌清理等。在/etc目錄下有crontab檔案,這個就是系統任務排程的配置檔案,只有系統管理員可以修改。

前四行是用來配置crond任務于寧的環境變數,第一行shell變數制定了系統要使用哪個shell,這是bash。

第二行path變數制定了系統執行命令的路徑,第三行mailto變數制定了crond的任務執行細膩將通過電子郵件傳送給root使用者,如果mailto變數為空,則表示不傳送任務任務執行資訊給使用者,第四行的home變數制定了在執行命令或指令碼時使用的主目錄。

使用者任務排程:使用者定期要執行的工作,比如使用者資料備份、定時郵件提醒等。使用者可以使用crontab工具來定製自己的計畫任務,所有使用者定義的crontab檔案都被儲存在

/var/spool/cron目錄中。

二、crontab檔案

crontab檔案包含送交crond

守護程序

的一系列作業和指令。

crontab檔案的含義:使用者所建立的crontab檔案中,每一行都代表一項任務,每行的每個字段代表一項設定,它的格式共分為六個段,前五段是時間設定段,第六段是要執行的命令段,格式如下:

minute:表示分鐘,0~59

hour: 表示小時,0~23

day: 表示日期,1~31

month:表示月份,1~12

week:表示星期,0~7,0和7代表星期日

command:要執行的命令,可以是系統命令,也可以使自己編寫的指令碼檔案

以上各個字段,可以使用以下特殊字段:

星號(*):代表所有的值

逗號(,):可以用逗號隔開的值指定乙個列表範圍,例如:「1,2,3,4,5」

中槓(-):可以用證書之間的中槓表示乙個整數範圍,例如:「2-6」,表示「2,3,4,5,6」

正斜線(/):可以用正斜線指定時間的間隔頻率,例如「0-23/2」表示每兩個小時執行一次,可以和星號一起使用,例如*/10,如果用在minute欄位,表示每十分鐘執行一次。

三、crond程序

crond常常在後台作為守護程序執行,每一分鐘檢查是否有預定的作業需要執行。這類作業一般稱為cron jobs。

檢視crontab服務狀態

service crond status

手動啟動crond服務:

service crond start

檢視crond服務是否已設定為開啟啟動,執行命令:

ntsysv

加入開機自動啟動:

chkconfig -level 35 crond on

四、cron.deny\ cron.allow檔案

系統管理員可以通過cron.deny 和 cron.allow 這兩個檔案來禁止或允許使用者擁有自己的crontab檔案。

/etc/cron.deny 表示不能使用crontab 命令的使用者

/etc/cron.allow 表示能使用crontab的使用者。

預設情況下,cron.allow檔案不存在。如果兩個檔案同時存在,那麼/etc/cron.allow 優先。如果兩個檔案都不存在,那麼只有超級使用者可以安排作業。

五、crontab語法

1:檢視當前使用者的定時任務

[oracle@localhost ~]$ crontab -l

* * * * * /home/oracle/test.sh >/dev/null 2>&1

2:編輯當前使用者的定時任務

可以在編輯狀態修改、刪除、新增一些定時任務。注釋一般用#

[oracle@localhost ~]$ crontab -e

3:刪除當前使用者的定時任務

[root@localhost ~]# crontab -r

[root@localhost ~]# crontab -l

no crontab for root

注意事項:

配置定時任務時,需要注意兩個問題:

1: 在shell中設定了必要的環境變數;例如乙個shell指令碼手工執行ok,但是配置成後台作業執行時,獲取不到oracle的環境變數,這是因為crontab環境變數問題,crontab的環境預設情況下並不包含系統中當前使用者的環境。所以,你需要在shell指令碼中新增必要的環境變數的設定

2: 盡量所有的檔案都採用完全路徑方式,避免使用相對路徑。

crontab定時執行命令

crontab 是系統守護程序 crontab file u user 用指定的檔案替代目前的crontab。crontab u user 用標準輸入替代目前的crontab.crontab l user 列出使用者目前的crontab.crontab e user 編輯使用者目前的crontab....

Linux使用crontab定時執行命令

crontab是linux下定時執行工具。例如有以下需求 要在每個月的1號備份 home temp 下的內容,生成以當時時間為名字的tar檔案,並放在 home bak 下。1.先建立shell指令碼,例如在 home temp 下建立bak.sh指令碼,並輸入 bin bash time date...

linux使用crontab定時執行命令過程

最近在寫了乙個資料採集的指令碼,想每天在伺服器上定時自動執行,但是由於是第一次接觸,遇到了問題,最終順利解決,現在總結方法如下 1.首先還是先將你需要執行的命令指令碼寫好或者上傳上去,我的s 件如下所示 usr bin bash echo 開始 home supervision log.txt us...