【发布时间】:2016-10-01 03:55:44
【问题描述】:
我看到了其他类似的问题,但我找不到任何关于如何找出通过 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
【问题讨论】:
-
你说它不起作用,但实际上发生了什么?
-
抱歉@JordonPhillips 脚本没有运行我相信因为同步永远不会发生并且回显语句没有打印到日志中
-
我应该指出它正在创建日志文件但日志文件仍然为空
-
您的脚本是
sh脚本,但使用bash运行它是无害的。反之一般不成立。无论哪种方式,您都应该在它跳起来咬您之前了解其中的区别。参见例如stackoverflow.com/questions/5725296/… -
另外,这不是一个真正的编程问题; serverfault 会是未来更好的选择。