gpt4 book ai didi

linux - 从 crontab 运行时找不到 Sqlplus 命令

转载 作者:太空宇宙 更新时间:2023-11-04 09:21:39 25 4
gpt4 key购买 nike

是这样的,我在rman中做了3个文件来执行备份数据库命令

测试.sh:

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

conectar.sql:

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

备份.sh:

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

然后我对文件执行了所有 chmod u+x 操作,使它们可执行,然后 export EDITOR=nano 更改 cron 编辑器。

当我进入crontab -e i put

00 15 * * * /u01/test.sh

如果我手动点击这个 test.sh,操作会正常运行,但是在 crontab 中我会收到“你收到一封邮件”的消息

From root@localhost.localdomain Thu Dec 22 16:20:01 2016 Return-Path: X-Original-To: oracle Delivered-To: oracle@localhost.localdomain Received: by localhost.localdomain (Postfix, from userid 500) id 956CD41D4B; Thu, 22 Dec 2016 16:20:01 -0400 (AST) From: root@localhost.localdomain (Cron Daemon) To: oracle@localhost.localdomain Subject: Cron /u01/test.sh Content-Type: text/plain; charset=UTF-8 Auto-Submitted: auto-generated X-Cron-Env: X-Cron-Env: X-Cron-Env: X-Cron-Env: X-Cron-Env: Message-Id: <20161222202001.956CD41D4B@localhost.localdomain> Date: Thu, 22 Dec 2016 16:20:01 -0400 (AST) /u01/test.sh: line 3: sqlplus: command not found"

你能为我重新制作脚本或 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 应该只用于交互式 shell - 与预定脚本共享它是不好的,尤其是在生产中。

关于linux - 从 crontab 运行时找不到 Sqlplus 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41302304/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com