歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> crontab 定時sqlplus 出錯

crontab 定時sqlplus 出錯

日期:2017/2/28 15:32:24   编辑:Linux教程

打算用linux去定時select自己每天上班都要查的數據。但對於linux的定時任務一無所知,so,從零學起:

Linux裡面使用crontab命令來執行定時任務。

1,查看當前有哪些定時任務

crontab -l

2,編寫新的定時任務。在這裡編輯任務的操作模式和 vi 一樣。

crontab -e,

3,保存定時的結果

  例1:每天5:30執行ls命令,並把結果輸出到/jp/test文件中

  30 5 * * * ls >/jp/test 2>&1

  注:2>&1 表示執行結果及錯誤信息。

計劃任務的格式共分為六段,前五段為時間設定段,第六段為所要執行的命令段,
格式如下:mi hh dd mm dw command

解釋:

mi 每小時的第幾分鐘執行該任務 ,取值范圍 0~59

  hh 每天的第幾個小時執行該任務 ,取值范圍 0~23

  dd 每月的第幾天執行該任務 ,取值范圍 1~31

  mm 每年的第幾個月執行該任務 ,取值范圍 1~12

  dw 每周的第幾天執行該任務 ,取值范圍 0~6,0表示周日

  command 指定要執行的程序

舉例如下:

  5 * * * * ls 指定每小時的第5分鐘執行一次ls命令

  30 5 * * * ls 指定每天的 5:30 執行ls命令

  30 7 8 * * ls 指定每月8號的7:30分執行ls命令

  30 5 8 6 * ls 指定每年的6月8日5:30執行ls命令

  30 6 * * 0 ls 指定每星期日的6:30執行ls命令 [ 注:0表示星期天,1表示星期1,以此類推,也可以用英文來表示,sun表示星期天,mon表示星期一等。 ]

  30 3 10,20 * * ls 每月10號及20號的3:30執行ls命令 [注:“,”用來連接多個不連續的時段 ]

  25 8-11 * * * ls 每天8-11點的第25分鐘執行ls命令 [注:“-”用來連接連續的時段 ]

  */15 * * * * ls 每15分鐘執行一次ls命令 [即每個小時的第0 15 30 45 60分鐘執行ls命令 ]

  30 6 */10 * * ls 每個月中,每隔10天6:30執行一次ls命令[即每月的1、11、21、31日是的6:30執行一次ls命令。 ]

簡單的了解了crontab的用法後,開始建立第一個定時任務,腳本如下:

cd /home/Oracle

. .bash_profile

sqlplus userid/password@TNS_NAME <<!

select * from tab;

exit;

!

結果報錯:

1, .bash_profile: file not found

2, sqlplus :command not found

第一個錯誤的解決方法是:使用source /home/oracle/.bash_profile,既然你找不到,我就給你個絕對路徑。

第二個錯誤的解決方式和第一個類似,也是使用絕對路徑,但還是想不通。既然已經成功source 環境變量了,系統就應該可以成功找到sqlplus的路徑了的。

修改後的腳本是

#!/bin/bash


cd /home/oracle

source /home/oracle/.bash_profile

/home/oracle/oracle/product/11.2.0/client/bin/sqlplus userid/password@TNS_NAME <<!

select * from tab;

exit;

!

總結:在腳本裡面使用命令最好把命令的絕對路徑加上

Copyright © Linux教程網 All Rights Reserved