在oracle 中可以利用dbms_job包定時執行pl/sql、sql過程,在像備份等需要在作業系統級定時任務只能採用crontab來完成
本文講述crontab具體用法,以供備忘.
在oracle 中可以利用dbms_job包定時執行pl/sql、sql過程,在像備份等需要在作業系統級定時任務只能採用crontab來完成
利用crontab來定時執行任務大致有如下三步:
1、編寫shell指令碼
2、利用crontab加入到定時任務佇列
3、檢視作業完成情況
一、如何建立shell指令碼
linux下有很多不同的shell,但我們通常使用bash(bourne again shell)進行程式設計,因為bash是免費的並且很容易使用
程式必須以下面的行開始(必須方在檔案的第一行):
#! /bin/sh
符號#!用來告訴系統它後面的引數是用來執行該檔案的程式。在這個例子中我們使用/bin/sh來執行程式。
當編輯好指令碼時,要想執行指令碼,必須使指令碼可以執行
下面的命令,可以使指令碼可以執行
chmod +x filename
然後可以輸入./filename來執行指令碼。
注:在shell程式設計時,#符號表示注釋,只該行結束為止。在編寫程式時,最好使用注釋。
變數
shell下所有變數都以字串表示,變數不需要宣告,直接使用。直接對變數進行賦值
a="hello world"
取出變數用$符號,如:
#! /bin/sh
a="hello world"
echo "a is:"
echo $a
執行該指令碼輸出結果如下:
a is :
hello world
shell 命令和流程控制
1)unix命令
在shell中可以使用任意的unix命令,但這裡介紹一些更常用的unix命令
echo ''this is a example" :列印輸出到螢幕
ls:列出檔案列表
cp sourcefile destinationfile :拷貝檔案
2)概念:管道,重定向和backtick
這些不是系統命令,但他們經常使用,很重要的
管道 | 將乙個命令的輸出作為另外乙個命令的輸入
grep -qa compat | more
重定向:將命令的結果輸出到檔案,而不是標準輸出(螢幕)
〉寫入檔案並覆蓋舊檔案
〉〉輸出追加到檔案的尾部,保留舊檔案。
3)流程控制
if ... ; then
...else if ...;then
...else
...fi
通常情況下,可以通過測試命令來對條件進行測試,比如可以比較字串,判斷檔案是否存在及是否有執行許可權等等
通常用「 [ ] 「來表示條件測試,注意這裡空格很重要,要確保方括號空格
[ -f "somefile" ] :判斷是否是乙個檔案
[ -x "/bin/ls" ] :判斷/bin/ls是否存在並有可執行許可權
[ -n "$var" ] :判斷$var變數是否有值
[ "$a" = "$b" ] :判斷$a和$b是否相等
例項一般程式設計步驟
任何優秀的指令碼都應該有幫助和輸入引數,並且寫乙個偽指令碼framework.sh,該指令碼包含了大多數指令碼都需要的框架結構。
是個非常不錯的注意。這時候,我們編寫指令碼時只需要執行cp命令即可
cp framework.sh myscript
然後插入自己需要的函式就可以了
除錯
最簡單的除錯命令當然是使用echo命令。您可以使用echo在任何懷疑出錯的地方列印任何變數值。這也是絕大多數的shell程式設計師要花費80%的時間來除錯程式的原因。shell程式的好處在於不需要重新編譯,插入乙個echo命令也不需要多少時間。
shell也有乙個真實的除錯模式。如果在指令碼"strangescript" 中有錯誤,您可以這樣來進行除錯:
sh -x strangescript
這將執行該指令碼並顯示所有變數的值。
shell還有乙個不需要執行指令碼只是檢查語法的模式。可以這樣使用:
sh -n your_script
這將返回所有語法錯誤。
redhat linux as 3 下定時執行任務
二、cron排程程序
三,可以利用重定向命令來輸出執行結果
> ,>>
四、具體例項
#! /bin/sh
su - oracle << eof
sqlplus test/test@test
@"test.sql"
insert into test_tb values (sysdate);
crontab檔案:
定時觸發器
file name 技能模組第一版 author clark 陳澤丹 created 2012 11 07 purpose module 程式 package.seeall pack gameapi require 系統介面 時間觸發器管理者 function new timer manager l...
定時觸發問題
定時觸發問題 定時觸發問題 如果只是乙個很少量的定時觸發。可能很多人會把哪個東西加到淺程池來實現。而我們這邊的實現是採用佇列方式。所有還沒有觸發的東西都放在乙個佇列裡。並且按觸發時間排好。比如說這是乙個要求比較實時的。我們就不需要0.5s檢查一下這個東西時間是不是到了。如果是以天為單位的。哪麼我們就...
linux 下crontab相關定時觸發的配置規則
linux 下crontab相關定時觸發的配置規則 1.基本格式 command 分 時 日 月 周 命令 2.取值範圍 分鐘1 59 每分鐘用 或者 1表示 小時1 23 0表示0點 日期1 31 月份1 12 星期0 6 0表示星期天 3.crontab命令 crontab file u use...