天天看點

定時引爆之crontab

楔子

其實寫一個python 或者 shell 腳本即可,以下内容隻為入門學習。

接下來開始埋放地雷或者×××。

簡介:

1.計劃任務,是任務在約定的時間執行已經計劃好的工作,這是表面的意思。

在Linux中,我們經常用到 cron 伺服器來完成這項工作。cron伺服器可以根據配置檔案約定的時間來執行特定的作務。比如我們可以在配置檔案中約定每天早上4點,對nginx伺服器重新啟動,這就是一個計劃任務;  

2.cron是一個linux下的定時執行工具

Cron 是Linux的内置服務,但它不自動起來,可以用以下的方法啟動、關閉這個服務:

usr/local/sbin/service crond start //啟動服務

usr/local/sbin/service crond stop //關閉服務

usr/local/sbin/service crond restart //重新開機服務

usr/local/sbin/service crond reload //重新載入配置

3.參數:

-u :隻有root 才能進行這個任務,也即幫其他使用者建立/删除crontab工作排程。

-e :編輯crontab 的工作内容。 //一個工作一行來編輯。

-l :查閱crontab 的工作内容。

-r  : 删除所有的crontab的内容. //若僅要删除一項,請用-e去編輯。

/etc/cron.allow  将可以使用crontab的賬号寫入其中,如不在其中則使用者不能使用。

/etc/cron.deny   将不可以使用的寫入其中,若沒有記錄在裡面則可以使用。       //優先判别/etc/cron.allow   但預設有/etc/cron.deny

[

root@

lsl ]# crontab -e  

定時引爆之crontab

分鐘 (0-59)

小時 (0-23)

日期 (1-31)

月份 (1-12)

星期 (0-7)//0  7代表星期天

#周月日不可同時存在,否則文法錯誤。

格式:*/3 * * * *     #每三分鐘執行一次,

2.互動式指令:at      #要想使用at 必須要有atd這個服務 

 [

lsl~]# /etc/init.d/atd restart    重新開機atd服務

lsl ~]# at 15:41 或  at now + 1 minutes      

 at> cp liuhezi /u01/app  #at 隻執行一次,注意  指令輸完後

 // 以 ctrl+d   結束。

at> job 4 at 2017-09-12 15:41 

lsl ]# cd /u01/app     

lsl ]# ls     進入/u01/app  目錄 發現還沒有複制的檔案因為還沒有到時間

oracle oraInventory 

lsl app]# date  

lsl ~]#          #到了時間再看已經有 

lishilong oracle oraInventory 

lsl~]# atq      #檢視at工作排程

  2017-09-12 15:19 a root  

lsl~]# atrm 1   #删除at工作排程

lsl~]# atq 

(2)batch指令使系統有空時才進行背景任務,他會在cpu工作負載小于0.8的時候,才進行你所要執行你的工作任務。

用法類似 at 使用者。

昨天crontab中的同步任務沒有執行,不知道是什麼原因沒有執行,貌似任務hang住了,想查詢一下crontab到底問題出在哪裡,或者hang在了什麼地方。

1.  linux

看 /var/log/cron這個檔案就可以,可以用tail -f /var/log/cron觀察

2.  unix

在 /var/spool/cron/tmp檔案中,有croutXXX001864的tmp檔案,tail 這些檔案就可以看到正在執行的任務了。

 3. mail任務

在 /var/spool/mail/root 檔案中,有crontab執行日志的記錄,用tail -f /var/spool/mail/root 即可檢視最近的crontab執行情況。

例子如圖所示:

vim /crontab/auto_cancel_order.sh

定時引爆之crontab

執行指令 crontab - e 執行任務計劃。

定時引爆之crontab

每隔一分鐘執行一次。

tail -10 /var/log/cron

定時引爆之crontab

總結:日積月累

繼續閱讀