내 크론 작업에서 출력이 포함된 이메일을 보내지 않고 빈 이메일만 표시됩니다.

내 크론 작업에서 출력이 포함된 이메일을 보내지 않고 빈 이메일만 표시됩니다.

누구든지 나를 도와줄 수 있나요? 내 cron 작업에서 출력이 포함된 이메일을 보내지 않습니다. 쉘 스크립트를 수동으로 실행하면 출력이 포함된 이메일이 생성됩니다.

스크립트의 모습은 다음과 같습니다.

#!/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

죄송합니다. Google에서 검색했기 때문에 이것을 부활시켜야 했고 간단한 해결책은 (적어도 내 경우에는) shebang을 사용하는 것이었습니다.

#!/bin/csh

orasid는 이 쉘을 표준 쉘로 사용하기 때문에

관련 정보