簡體   English   中英

從crontab運行時找不到Sqlplus命令

[英]Sqlplus command not found when running from crontab

就是這種情況,我在rman中制作了3個文件來執行備份數據庫命令

test.sh:

#!/bin/bash
sqlplus /nolog @/u01/conectar.sql

conectar.sql:

connect sys/manager as sysdba
ho rman target mydatabase/mypassword @/u01/backup.sh

backup.sh:

#!/bin/bash
RUN {backup database;}

然后,我對文件執行了所有的chmod u+x以使其可執行,然后export EDITOR=nano來更改cron編輯器。

當我去crontab -ei put

00 15 * * * /u01/test.sh

如果我手動選擇此test.sh,則該操作將正常運行,但是在crontab中,此消息將顯示“您收到了郵件”

來自root @ localhost.localdomain,2016年12月22日星期四,星期四返回路徑:X-原始-至:oracle交付至:oracle@localhost.localdomain接收:由localhost.localdomain(后綴,來自用戶ID 500)ID 956CD41D4B ; 2016年12月22日,星期四16:20:01 -0400(AST)發件人:root@localhost.localdomain(Cron守護程序)收件人:oracle@localhost.localdomain主題:Cron /u01/test.sh內容類型:text / plain; charset = UTF-8自動提交:自動生成的X-Cron-Env:X-Cron-Env:X-Cron-Env:X-Cron-Env:X-Cron-Env:消息ID:<20161222202001.956CD41D4B @ localhost.localdomain>日期:2016年12月22日,星期四16:20:01 -0400(AST)/u01/test.sh:第3行:sqlplus:未找到命令”

請為我重新制作腳本或crontab嗎? 如果您能以我將不勝感激的確切答案回答,那么我不是這種環境下的專家,因此, 所需的一般知識答案將使我保持不變,謝謝。

您可以通過多種方式進行操作:

  1. 在cron行之前:

    PATH=$PATH:/full/path/to/oracle/bin

  2. 或在cron行本身上:

    00 15 * * * PATH=$PATH:/full/path/to/oracle/bin /u01/test.sh

  3. 讓您的腳本test.sh另一個設置您的Oracle環境的共享腳本:

    source /path/to/oracle_env.sh

我喜歡第三種方法,因為它非常靈活,可以幫助我們使crontab保持整潔。 .bash_profile應該僅用於交互式外殼程序-與計划腳本共享它是不好的,尤其是在生產環境中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM