【问题标题】:Crontab is not working on Amazon EC2 serverCrontab 无法在 Amazon EC2 服务器上运行
【发布时间】:2012-12-05 13:57:13
【问题描述】:

Crontab 无法在 Amazon EC2 Linux 服务器上运行。

我已将以下代码保存在 /etc/crontab 文件中

crontab
# For details see man 4 crontabs 
# Example of job definition: 
# .---------------- minute (0 - 59) 
# | .------------- hour (0 - 23) 
# | | .---------- day of month (1 - 31) 
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ... 
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat 
# | | | | | 
# * * * * * user-name command to be executed 
* 10 * * * tar cvfpz /home/backup/web_$(date +%Y%m%d).tar.gz /home/web

我已经启动了 crontab 命令,但是这个没有用。

我也将这一行保存在“crontab -e”中,但 cron 不起作用。

* 10 * * * tar cvfpz /home/backup/web_$(date +%Y%m%d).tar.gz /home/web

有没有和我一样经历的人?

谢谢。

【问题讨论】:

  • 您是否也尝试过使用完整的 path 到 tar 的命令?
  • 如果您将输出重定向到某个文件,它会说明什么?像这样:* 10 * * * tar cvfpz /home/backup/web_$(date +%Y%m%d).tar.gz /home/web >> /tmp/output.txt 2>&1
  • @Jake 你试过二进制文件的绝对路径,比如你的cronjob中的/bin/tar/bin/date
  • $(date +%Y%m%d) 命令似乎不起作用。

标签: linux amazon-web-services crontab


【解决方案1】:

不要使用nano,使用原生的sudo crontab -e 命令。

【讨论】:

  • 那不会有什么不同!
  • @dlammy 它确实有所作为。当我编辑 cron 时,当我使用 nano 命令时它不起作用。
  • 最后,如果你使用 Vim、nano、sublime 等,它们都是一样的,我很确定你做错了什么。顺便说一句,我一直在使用 nano
  • @dlammy 通过本机 crontab -e 命令编辑 cron 并通过 nano 或其他编辑器直接编辑它时,至少不是在我的 AWS EC2 服务器上。最佳做法是始终使用本机命令。在你实际测试之前假设它是同一件事很方便。
  • 我一直在使用 nano 来编辑任何东西,而且我一直在使用 nano 来编辑 crontabs,据您所知,如果您深入研究 crontab -e 命令,您会看到它正在使用打开文件操作系统编辑器之一,如果您没有在操作系统中指定用于编辑文件的默认编辑器,则会提示您选择一个。请查看以下链接howtogeek.com/410995/how-to-change-the-default-crontab-editor
【解决方案2】:

对于与 AWS 机器和 EBS 打交道的人,您需要在命令前指定 root 关键字,因为不允许 ec2-user 运行 crontabs。当然有办法解决这个问题。

您可以通过键入 sudo nano /etc/cron.d/mycrontabscrontab -e 来编辑 crontab

* * * * * root bla bla

  • 还要确保文件以新行结束

【讨论】:

    【解决方案3】:

    我最近开始在 ec2 实例上使用 Amazon 的 linux 发行版,在为 cron 尝试了各种事情之后,我需要的是:
    sudo service crond start
    crontab -e
    这使我可以在不指定用户的情况下将 cron 作业设置为“ec2-user”。例如:
    0 12 * * * python3 example.py
    事实上,在这里指定一个用户会阻止它运行。

    【讨论】:

      【解决方案4】:

      您应该使用crontab -e 为登录的用户创建cron,这样您就不需要通知用户名。 见这里:https://stackoverflow.com/a/16986464/1777152

      【讨论】:

        【解决方案5】:

        解决了这个问题。

        我使用了这段代码,它有效!

        * 2 * * * root tar cvfpz /home/backup/web_`date +\%Y\%m\%d`.tar.gz /home/web
        

        【讨论】:

        • 我使用了 ec2-user,但它不起作用。当我使用root时,它起作用了。以防万一,这对某人有帮助。
        • 在我的命令前面添加“root”也神奇地起作用了.... @Jake:您可以标记为“接受”您自己的答案。 (不过,多一点描述会有所帮助)
        猜你喜欢
        • 2014-01-27
        • 1970-01-01
        • 2020-07-12
        • 2017-09-21
        • 2013-05-08
        • 2011-06-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多