在另一个 shell 脚本中调用的 cronjob bash 脚本不起作用

在另一个 shell 脚本中调用的 cronjob bash 脚本不起作用

我有一个 shell 脚本,它在其中调用 bash 脚本。当我手动运行这个 shell 脚本时,它工作正常,但是当我通过 cronjob 安排这个脚本时,bash 脚本没有完成预期的工作。

shell脚本如下:

#!/usr/bin/sh

SHDIR=/oracle/CMC/scripts/utils/SCTempConst

export ORACLE_SID ORACLE_HOME SHDIR TIMESTMP DATESTAMP

cd $SHDIR

TO=<actual email address>
BCC=<actual email address>

if [ -f /oracle/CMC/scripts/utils/SCTempConst/SCTempConst.xlsx ]
then
SUBJECT="Subject ...."

ATTCH=SCTempConst.xlsx

export TO BCC SUBJECT ATTCH SHDIR
./BNSendMail.sh

fi

BNSendmail 如下:

#!/bin/bash

cd ${SHDIR}
FROM="<from email id>"

boundary="ZZ_/afg6432dfgkl.94531q"
body=`cat msg.txt`

# Build headers
{

printf '%s\n' "From: $FROM
To: $TO
Cc: $CC
Bcc: $BCC
Subject: $SUBJECT
Mime-Version: 1.0
Content-Type: multipart/mixed; boundary=\"$boundary\"

--${boundary}
Content-Type: text/plain; charset=\"US-ASCII\"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

$body
"

mimetype1=application/vnd.openxmlformats-officedocument.spreadsheetml.sheet

printf '%s\n' "--${boundary}
Content-Type: $mimetype1
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename=\"${ATTCH}\"
"

base64 "${SHDIR}/${ATTCH}"
echo

# print last boundary with closing --
printf '%s\n' "--${boundary}--"

} | sendmail -t -oi 

正如我所说,手动执行时效果非常好。只有当我将其设置为 cronjob 时,它才不会发送电子邮件。

任何帮助表示赞赏。

谢谢和问候,巴苏

答案1

发现问题了。sendmail通过 执行时没有找到cron,我必须指定 的完整路径/usr/sbin/sendmail并且它有效!

相关内容