我看到其他类似的问题,但找不到如何通过Crontab正确运行Bash脚本的实际信息。.sh文件位于用户目录中(在我的情况下是serverpilot)。
该脚本试图复制apps
文件夹的内容并发送到我的S3存储桶。当在终端中使用sh backupS3.sh
运行该脚本时,它可以完美地工作,但是在Cron中却没有反应。我看到人们参考了PATH变量等,但不知道从哪里开始!
/backupS3.sh
#!/bin/sh
echo 'Started backing to S3'
date +'%a %b %e %H:%M:%S %Z %Y'
aws s3 sync /apps s3://bucketname
date +'%a %b %e %H:%M:%S %Z %Y'
echo 'Finished backing to S3'
定时任务(crontab)
*/10 * * * * /backupS3.sh >> backupS3.log
有人能指出我做错了什么吗?谢谢!
编辑:我在cron命令的末尾添加了2>&1,现在日志文件里有一些内容:
/bin/sh: 1: /backupS3.sh: not found
sh
脚本,但用bash
运行它是无害的。反之则通常不成立。无论哪种情况,都应该在它跳起来咬你之前了解它们之间的区别。例如,请参阅 https://dev59.com/g2025IYBdhLWcg3w6aUX - tripleee