无法让cron在Amazon EC2上工作?

tur*_*tle 17 unix ubuntu cron amazon-ec2

我花了两天时间试图理解为什么我不能让cron在我的Ubuntu EC2实例上工作.我已经阅读了文档.有人可以帮忙吗?我想要的只是获得一个有效的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
Run Code Online (Sandbox Code Playgroud)

cronjob似乎正在运行:

$ crontab -l
02 * * * * /usr/bin/wget -O /home/ubuntu/backups/testfile http://www.nytimes.com/
Run Code Online (Sandbox Code Playgroud)

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

谢谢你的时间.

Dru*_*ion 30

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在命令行上键入命令,将其与当前系统正常运行时间进行比较.

上面的场景在安装了Amazon Linux O/S的服务器上成功运行,但它也适用于其他Linux机箱.这会修改当前用户的crontab,而不会触及系统的crontabs,并且不需要crontab条目中的用户,因为您在自己的用户下运行.更简单,更安全!

  • 额外提示,重新步骤#6,一次也可以做`tail -F/tmp/uptime`(`-F`表示它可以在文件存在之前开始观看) (2认同)

eip*_*ark 23

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

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

尝试:

sudo service crond status
Run Code Online (Sandbox Code Playgroud)

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

  • 有一种情况我的cron不工作(守护进程正在运行,因为它正在向日志输出以下消息 - "FAILED授权用户使用PAM(模块未知)").根据这个答案,用`/etc/init.d/crond restart`重新启动守护进程,然后cron开始工作. (4认同)
  • (默认)AWS ec2 实例将使用 `sudo service crond status | 开始 | 停止 | 重新启动` - 在您链接的文章中也有说明 (2认同)

enh*_*nic 5

在某些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作业的输出,以验证其是否正常工作