使用 CRON 运行时,Shell 脚本仅部分执行

使用 CRON 运行时,Shell 脚本仅部分执行

我编写了一个 shell 脚本,它执行以下操作:

  • 从 POP3 帐户检索邮件(使用 GetMail)
  • 将该电子邮件的副本保存到 S3(使用 AWS CLI)
  • 通过电子邮件将电子邮件的文件大小发送给我

脚本运行美好的手动和技术运行来自 CRON,但它似乎只发送电子邮件。getmail 和 S3 位似乎没有运行。

我读过的所有内容似乎都在强调,使用 CRON 时需要小心相对路径等,但我思考我在需要去的任何地方都使用绝对路径,所以我很困惑问题可能出在哪里。

我的 Shell 脚本在这里:

#!/bin/bash

# Run GetMail
getmail -r /PATH/TO/EMAIL/getmail.email

# Save to S3
aws s3 cp /PATH/TO/SCRIPT/email-backup.mbox s3://XXXXXXXXXX/email-backup.mbox 

# Send Confirmation Email

SUBJECT="EMAIL SUBJECT"
EMAIL="[email protected]"

# Get current filesize
FILENAME=/PATH/TO/SCRIPT/email-backup.mbox
FILESIZE=$(stat -c%s "$FILENAME")

# Email Content
EMAILMESSAGE="/tmp/emailmessage.txt"
echo "EMAIL BODY" >$EMAILMESSAGE
echo "" >>$EMAILMESSAGE
echo "Current File Size: $FILESIZE bytes" >>$EMAILMESSAGE

# Send the Mail
/bin/mail -s "$SUBJECT" "$EMAIL" < $EMAILMESSAGE

答案1

我遇到过类似的问题,因为 CRON 可能非常挑剔。我最好的猜测是您需要将路径添加到 aws 命令中,例如:

/usr/local/bin/aws s3 cp /PATH/TO/SCRIPT/email-backup.mbox s3://XXXXXXXXXX/email-backup.mbox 

祝你好运!

相关内容