linux 定時執行shell指令碼

2021-05-27 21:02:19 字數 2516 閱讀 8816

在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過程,在像備份等需要在作業系統級定時任務只能...