楔子
其實寫一個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

分鐘 (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 - e 執行任務計劃。
每隔一分鐘執行一次。
tail -10 /var/log/cron
總結:日積月累