无法让cron在Amazon EC2上工作?

时间:2012-05-06 16:28:03

标签: unix ubuntu amazon-ec2 cron

我花了两天时间试图理解为什么我不能让cron在我的Ubuntu EC2实例上工作。我读过the documentation。有人可以帮忙吗?我想要的只是获得一个有效的cronjob。

我使用简单的wget命令来测试cron。我已经验证这可以从命令行手动工作:

/usr/bin/wget -O /home/ubuntu/backups/testfile http://www.nytimes.com/

我的crontab文件如下所示:

02 * * * * /usr/bin/wget -O /home/ubuntu/backups/testfile http://www.nytimes.com/

命令之间有单个空格,命令下面有一个空行。我还尝试从系统级sudo crontab -e执行此命令。它仍然无法正常工作。

cron守护程序正在运行:

ps aux | grep crond                                                                                                                   
ubuntu    2526  0.0  0.1   8096   928 pts/4    S+   10:37   0:00 grep crond

cronjob似乎正在运行:

$ crontab -l
02 * * * * /usr/bin/wget -O /home/ubuntu/backups/testfile http://www.nytimes.com/

有没有人有任何建议或可能的解决方案?

感谢您的时间。

8 个答案:

答案 0 :(得分:27)

Cron可以在基于Amazon的Linux服务器上运行,就像在任何其他Linux服务器中一样。

  1. 使用SSH登录控制台。
  2. 在命令行上运行crontab -e
  3. 您现在位于当前用户的crontab的vi编辑器中(默认情况下是控制台用户,具有root权限)
  4. 要测试cron,请添加以下行:* * * * * /usr/bin/uptime > /tmp/uptime
  5. 现在保存文件并退出vi(按Esc并输入:wq)。
  6. 一两分钟后,检查是否在/ tmp(cat /tmp/uptime)中创建了正常运行时间文件。
  7. 通过在命令行上键入uptime命令将其与当前系统正常运行时间进行比较。
  8. 上面的场景在安装了Amazon Linux O / S的服务器上成功运行,但它也适用于其他Linux机箱。这会修改当前用户的crontab,而不会触及系统的crontabs,并且不需要crontab条目中的用户,因为您在自己的用户下运行。更容易,更安全!

答案 1 :(得分:23)

您的cron守护程序正在运行。当您运行ps aux | grep crond时,结果显示只有grep命令正在运行。每当您运行ps aux | grep blah时都要注意这一点。

运行此命令检查cron服务的状态。

尝试:

sudo service crond status

此处的其他信息:http://www.cyberciti.biz/faq/howto-linux-unix-start-restart-cron/

答案 2 :(得分:3)

不要忘记指定用户将其运行为。尝试在/etc/cron.d文件夹中创建一个新文件,该文件夹以您想要的名称getnytimes命名,并且该文件的内容只是:

02 * * * * root / usr / bin / wget -O / home / ubuntu / backups / testfile http://www.nytimes.com/

答案 3 :(得分:2)

在AWS Ubuntu EC2计算机上,无法使用crontab -e甚至sudo crontab -e编辑cron作业或使其运行(无论出于何种原因)。我能够通过以下方式获得Cron工作:

  1. touch /home/ubuntu/crontest.log创建日志文件
  2. sudo vim /etc/crontab,用于编辑系统级crontab
  3. 使用root用户在倒数第二行添加自己的cron作业,例如* * * * * root date && echo 'It works!'>> /home/ubuntu/crontest.log 2>&1,它将stdout和stderr转储到您在步骤1中创建的日志文件中
  4. 等待1分钟,然后cat /home/ubuntu/crontest.log以查看cron作业的输出,以验证其是否正常工作

答案 4 :(得分:1)

在我的情况下,cron作业正在运行,但脚本失败,它运行失败。失败的原因是由于我在脚本中的include行中使用了相对路径而不是绝对路径。

答案 5 :(得分:0)

正在运行

/usr/bin/wget -O /home/ubuntu/backups/testfile http://www.nytimes.com/

给我一​​个错误

/home/ubuntu/backups/testfile: No such file or directory

这是你的问题吗? 我猜cron没有把这个错误写到任何你可以将stderr重定向到stdout并看到如下错误的地方:

02 * * * * /usr/bin/wget -O /home/ubuntu/backups/testfile http://www.nytimes.com/ > /home/ubuntu/error.log 2&>1 

答案 6 :(得分:0)

cronjob无法运行的可能原因之一: 确保服务器时间和您的cronjob时间相同。因此,我浪费了很多时间。

答案 7 :(得分:0)

对我来说把戏是什么

  1. 确保crontab处于活动状态:
    sudo service crond status
  1. 通过运行以下命令重新启动crontab:
    sudo service crond restart
  1. 像往常一样重新安排cron作业:
    crontab -e