我的 cron 作业没有发送包含任何输出的电子邮件,我只看到一封空白电子邮件

我的 cron 作业没有发送包含任何输出的电子邮件,我只看到一封空白电子邮件

有人可以帮我吗?我的 cron 作业不是发送带有输出的电子邮件。当我手动运行 shell 脚本时,它会生成一封带有输出的电子邮件。

这是脚本看起来像

#!/bin/bash

MAILLIST=<email>
LogDirectory='/app/oracle/admin/monitor/'

DBUSER='rman'
DBUSERPASSWORD='rman01'
DB='pdcatdb'
SUBJECT="RMAN Backup Status Report"
ORACLE_HOME=/app/oracle/product/12.1.0.2_64

${ORACLE_HOME}/bin/sqlplus -s <<EOF  > ${LogDirectory}/query.log
${DBUSER}/${DBUSERPASSWORD}@${DB}
set pagesize 20000
set linesize 2000
set wrap off
set trimspool on
set feedback off
set echo off
set termout off
set heading off
set underline off
set colsep ','
SELECT RTRIM(A.DB_NAME)||'---->'||
       LTRIM(A.STATUS) "BACKUP_STATUS"
  FROM rman.RC_RMAN_STATUS A,
       (  SELECT DB_NAME, OBJECT_TYPE, MAX (END_TIME) END_TIME
            FROM rman.RC_RMAN_STATUS
           --WHERE     OBJECT_TYPE IN ('DB FULL', 'DB INCR')
           WHERE     OBJECT_TYPE IN ('DB INCR')
                 AND STATUS IN ('COMPLETED', 'COMPLETED WITH ERRORS', 'FAILED')
                 AND OPERATION IN ('BACKUP', 'BACKUP COPYROLLFORWARD')
        GROUP BY DB_NAME, OBJECT_TYPE) B
 WHERE     A.OBJECT_TYPE IN ('DB FULL', 'DB INCR', 'ARCHIVELOG')
       AND STATUS IN ('COMPLETED', 'COMPLETED WITH ERRORS', 'FAILED')
       AND OPERATION IN ('BACKUP', 'BACKUP COPYROLLFORWARD')
       AND A.DB_NAME = B.DB_NAME
       AND A.END_TIME = B.END_TIME
       AND A.OBJECT_TYPE = B.OBJECT_TYPE
       AND A.end_time > sysdate-7
       order by 1
       /
EOF
mailx -s "Rman Backup Report" <email> < /app/oracle/admin/monitor/query.log

答案1

这些环境变量可能${ORACLE_HOME}在您的 bash 配置文件中。这不会通过 cron 自动读取。

在 #!/bin/bash 之后插入以下行。

source /home/user/.bash_profile

答案2

抱歉,我必须复活这个,因为我在谷歌上搜索这个简单的解决方案是(至少在我的情况下)使用 shebang

#!/bin/csh

因为orasid使用这个shell作为标准shell

相关内容