這兩天一直在忙於將一項任務全自動化,以便節省人工操作,由於伺服器是linux,用到了crontab命令,具體命令大致如下:
46 21 * * * night_job.sh>>night_job.log 2>&1
為了便於跟進查詢執行狀態和日誌,將任務的輸出重定向到night_job.log日誌中,由於在night_job.sh中包含了
數量眾多的sqlldr:sqlloader匯入命令和sqlplus命令,開始測試時並未得到預期的結果,通過日誌觀察到
line 136: sqlldr: command not found
line 1: sqlplus: command not found
而當前使用者的path環境變數中已經包含了$oracle_home/bin,按理說應該讀取到,推測是可能是crontab命令並沒有初始化當前使用者下的環境變數導致。
綜合了網上的其他文章,通過如下幾種方式解決:
1、將.bash_profile中的設定拷貝到crontab執行的指令碼中
2 、在crontab執行的shell指令碼先執行./bash_profile
3、source dir/.bash_profile
以上三種處理方式中
1最繁瑣,如果使用者下增加環境變數設定,可能仍然需要修改該指令碼
2相對簡單些,但是./執行要切換到使用者根目錄執行,在執行其他指令碼之前要確保路徑是否正確
3最簡單,直接載入環境變數即可
按照3中的方式在其他任務執行之前加入該命令,任務執行成功。問題解決。
crontab定時任務
今天工作項有個任務是讓ubuntu定時執行某個指令碼,對postgresql資料庫進行定時備份。linux 系統都有個cron定時任務的機制。今天做些筆記,以便日後翻查。注意 cron機制是有個使用者系統的概念的,即分系統cron和使用者cron,每個使用者所執行的cron任務可能不同。1.以roo...
crontab定時任務
基本格式 command 分 時 日 月 周 命令 第1列表示分鐘1 59 每分鐘用 或者 1表示 第2列表示小時1 23 0表示0點 第3列表示日期1 31 第4列表示月份1 12 第5列標識號星期0 6 0表示星期天 第6列要執行的命令 我的需求是定時備份mongodb 編寫任務執行的指令碼ba...
Crontab定時任務
我們可以使用crontab執行一些週期任務 crontab u user file crontab u user 將file做為crontab的任務列表檔案並載入crontab 編輯crontab檔案內容 顯示crontab檔案內容 刪除載入後的crontab檔案內容 每分鐘向使用者目錄下的log....