在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檔案:
linux 定時執行shell
第一步 安裝 crontab 命令 yum y install vixie cron 擴充套件 service crond start 啟動服務 service crond stop 關閉服務 service crond restart 重啟服務 service crond reload 重新載入配...
linux 定時執行shell指令碼
今天從網上看到了一篇文章,將其收藏。在oracle 中可以利用dbms job包定時執行pl sql sql過程,在像備份等需要在作業系統級定時任務只能採用crontab來完成 本文講述crontab具體用法,以供備忘.利用crontab來定時執行任務大致有如下三步 1 編寫shell指令碼 2 利...
linux 定時執行shell指令碼詳解
在oracle 中可以利用dbms job包定時執行pl sql sql過程,在像備份等需要在作業系統級定時任務只能採用crontab來完成 本文講述crontab具體用法,以供備忘.在oracle 中可以利用dbms job包定時執行pl sql sql過程,在像備份等需要在作業系統級定時任務只能...