Shell脚本只在CRON运行时部分执行

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

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

脚本手动运行良好 ,技术上从CRON 运行 ,但似乎只是发送电子邮件。 getmail和S3位似乎不运行。

我所读过的所有东西似乎都是在使用CRON时需要注意的相对path等信息,但我认为我在任何地方都使用绝对path,所以我难以理解这个问题可能是。

我的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 

我有类似的问题,因为CRON可以相当挑剔。 我最好的猜测是你需要添加path到aws命令,例如:

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

祝你好运!