我花了两天时间试图理解为什么我不能让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/
有没有人有任何建议或可能的解决方案?
感谢您的时间。
答案 0 :(得分:27)
Cron可以在基于Amazon的Linux服务器上运行,就像在任何其他Linux服务器中一样。
crontab -e
。* * * * * /usr/bin/uptime > /tmp/uptime
cat /tmp/uptime
)中创建了正常运行时间文件。uptime
命令将其与当前系统正常运行时间进行比较。上面的场景在安装了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工作:
touch /home/ubuntu/crontest.log
创建日志文件sudo vim /etc/crontab
,用于编辑系统级crontab * * * * * root date && echo 'It works!'>> /home/ubuntu/crontest.log 2>&1
,它将stdout和stderr转储到您在步骤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)
对我来说把戏是什么
sudo service crond status
sudo service crond restart
crontab -e