linux 定時觸發

2021-06-05 10:38:18 字數 2505 閱讀 1233

在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...