从本地存储的脚本运行crontab作业

时间:2017-12-06 20:22:23

标签: amazon-s3 cron pg-dump

无法从本地存储的脚本运行crontab psql备份作业。我通过crontab -e添加了作业,当我使用crontab -l时,它会显示在作业列表中。它应该运行的脚本运行正常,检查它,按原样运行并在使用./backup.sh时将输出转储到指定的s3存储桶

这就是我设定的工作:

59 23 * * 7 /Users/myusername/backup.sh

这项工作应该在每个星期天晚上11:59运行,但事实并非如此。我无法弄清楚问题是什么(我是否需要在每个作业之间留下换行符/空格,或者只是在我的crontab列表中丢失的作业之后?

非常感谢任何帮助。感谢。

1 个答案:

答案 0 :(得分:0)

根据您的发行版,您可能需要检查Cron服务的日志。

可能出于问题的原因的非详尽清单:

  1. Cron服务根本没有运行,因此没有启动任何任务;
  2. 通常Cron会为您的脚本传递一组非常有限的环境变量,因此您的脚本可能因某些环境缺失而失败。这可能会反映在cron守护程序日志中
  3. 你能做什么

    Cron服务:如果您的发行版使用systemd,请尝试运行systemctl status cron(或systemctl status crond?)以检查它是否正在运行。

    您的脚本已启动但失败:此处有几件事需要尝试。

    1. 尝试检查cron服务日志,可能在启动脚本之前使用journalctl --unit cronjournalctl -f之类的内容;
    2. 检查主目录中是否有dead.letter个文件,其中包含失败脚本的输出。当Cron启动您的脚本并且脚本输出某些内容(这被认为是一个问题)时,该输出将邮寄给您。如果没有正确配置邮件,那么它通常会转到该文件。
    3. 在脚本的开头添加这样的内容:

      (
        date
        id -a
        set
        echo
      ) >> /tmp/myscript.log
      
    4. 然后等到cron运行你的脚本并检查文件/tmp/myscript.log是否已创建。然后尝试手动运行脚本,复制您现在知道的cron创建的所有环境。即除了Cron离开的变量之外的其他所有内容,并确保id是正确的。