天天看點

Linux為使用者新增定時任務(crontab指令)Linux crond服務介紹編寫測試shell腳本crontab指令建立定時任務

Linux crond服務介紹

crond服務是Linux系統預設會安裝的服務工具,與windows下的計劃任務類似,用來周期性的執行某種任務或等待處理某些事件的一個守護程序,并且啟動主機會自動預設啟動crond程序,crond程序會定期檢查是否有要執行的任務,如果有要執行的任務,則自動執行該任務。

crond服務可以實作系統周期性所要執行的工作,比如:資料庫周期性備份、重要檔案異機備份、資料庫過期歸檔日志清理、日志清理等等。

crond服務常用的啟停、重新開機指令

#啟動定時任務服務
/sbin/service crond start 
#關閉定時任務服務
/sbin/service crond stop 
#重新開機定時任務服務
/sbin/service crond restart 
#重新載入配置
/sbin/service crond reload 
#檢視定時任務服務狀态
/sbin/service crond status 
           

編寫測試shell腳本

建立一個空腳本檔案授權讀寫以及可執行權限

#建立一個空腳本檔案
[[email protected] orabackup]# touch backtest.sh
#授權讀寫以及可執行權限
[[email protected] orabackup]# chmod 755 backtest.sh
[[email protected] orabackup]# ll
-rwxr-xr-x 1 oracle oinstall    0 11-15 10:28 backtest.sh
           

編輯測試腳本

[[email protected] orabackup]# vi backtest.sh 
#!/bin/sh
echo .........................start.........................

echo 孑木文學的部落格:https://blog.csdn.net/weixin_39699061

echo .........................stop..........................
~
~
~
"backtest.sh" 6L, 193C written
           

測試腳本執行

[[email protected] orabackup]# ./backtest.sh 
.........................start.........................
孑木文學的部落格:https://blog.csdn.net/weixin_39699061
.........................stop..........................
[[email protected] orabackup]#
           

crontab指令建立定時任務

crontab指令

crontab [-u username]  #省略使用者表表示操作目前使用者的crontab
    -e      #(編輯工作表)
    -l      #(列出工作表裡的指令)
    -r      #(删除工作作)
           

切換到Oracle使用者建立定時任務

#切換到Oracle使用者建立定時任務(每天淩晨1點執行定時任務)
[[email protected] ~]# su - oracle
[[email protected] ~]$ crontab -e
00 1 * * *  /backup/orabackup/backtest.sh >> /backup/orabackup/bak.out 2>&1
~
~
~
~
~
           

關于cron表達式可以參考 http://cron.qqe2.com,如下圖所示:

Linux為使用者新增定時任務(crontab指令)Linux crond服務介紹編寫測試shell腳本crontab指令建立定時任務

以下舉例比較常見的表達式

0 0 1 * * ? 		#每天淩晨1點執行
0 0 1,13 * * ? 		#每天淩晨1點以及下午1點執行
0 0 0 1 * ? *		#每月1日的淩晨執行
0 0 1 1 * ? *		#每月1日的淩晨1點執行
0 0 4 L * ? 		#每月最後一天淩晨4點執行
0 15 10 15 * ?     	#每月15日上午10:15觸發 
           

檢視已建立的定時任務

#檢視已建立的定時任務
[[email protected] ~]$ crontab -l
00 1 * * *  /backup/orabackup/backtest.sh >> /backup/orabackup/bak.out 2>&1
           

定時任務服務重新開機

#執行定時任務服務重新開機
[[email protected] ~]$ /sbin/service crond restart
rm: 無法删除 “/var/run/crond.pid”: 權限不夠                [失敗]

啟動 crond:cardmgr 已經在運作                             [失敗]

#oracle使用者沒有權限執行該指令,退出Oracle使用者到root使用者執行定時任務服務重新開機
[[email protected] ~]$ exit
logout
[[email protected] ~]# /sbin/service crond restart
停止 crond:                                               [确定]
啟動 crond:                                               [确定]
[[email protected] ~]#
           

檢視定時任務服務狀态

[[email protected] ~]# /sbin/service crond status
crond (pid  24844) 正在運作...
[[email protected] ~]# 
           

定時任務實作資料庫備份

參看部落格:Linux定時任務實作Oracle資料庫每天進行全庫備份

繼續閱讀