首页 文章

从crontab运行时找不到Sqlplus命令

提问于
浏览
0

就是这样,我在rman中创建了3个文件来执行backup database命令

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 -e i put

00 15 * * * /u01/test.sh

如果我手动clic这个test.sh,操作正常运行,但然后在crontab中我收到“你收到邮件”的消息

来自root@localhost.localdomain Thu Dec 22 16:20:01 2016返回路径:X-Original-To:oracle Delivered-To:oracle@localhost.localdomain收到:by localhost.localdomain(Postfix,from userid 500)id 956CD41D4B; 2016年12月22日星期四16:20:01 -0400(AST)来自:root@localhost.localdomain(Cron Daemon)收件人: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:line 3:sqlplus:command not found“

请问你能为我重新编写脚本或crontab吗?如果你能回答我会很感激的确切修改,我不是这个环境的专家,所以需要回答的一般知识会让我一样,谢谢 .

1 回答

  • 0

    你可以通过多种方式实现这一目标:

    • 就在cron线之前:

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

    • 或者在cron线上:

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

    • 让您的脚本 test.sh 源另一个设置Oracle环境的共享脚本:

    source /path/to/oracle_env.sh

    我更喜欢第三种方法,因为它非常灵活,它可以帮助我们保持crontab的整洁 . .bash_profile应仅用于交互式shell - 与计划脚本共享它并不好,特别是在 生产环境 中 .

相关问题