Unix 无法让cron在Amazon EC2上工作?

Unix 无法让cron在Amazon EC2上工作?,unix,ubuntu,amazon-ec2,cron,Unix,Ubuntu,Amazon Ec2,Cron,我花了两天时间试图理解为什么我不能让cron在我的ubuntuec2实例上工作。我读过。有人能帮忙吗?我只想找份工作 我使用一个简单的wget命令来测试cron。我已经通过命令行验证了这一点: /usr/bin/wget-O/home/ubuntu/backups/testfilehttp://www.nytimes.com/ 我的crontab文件如下所示: 02****/usr/bin/wget-O/home/ubuntu/backups/testfilehttp://www.nytimes

我花了两天时间试图理解为什么我不能让cron在我的ubuntuec2实例上工作。我读过。有人能帮忙吗?我只想找份工作

我使用一个简单的wget命令来测试cron。我已经通过命令行验证了这一点:

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

我的crontab文件如下所示:

02****/usr/bin/wget-O/home/ubuntu/backups/testfilehttp://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/
有人有什么建议或可能的解决方案吗


谢谢您的时间。

别忘了指定运行它的用户。尝试在您的
/etc/cron.d
文件夹中创建一个新文件,该文件以您希望执行的操作命名,如
getnytimes
,并且该文件的内容仅为:


02****root/usr/bin/wget-O/home/ubuntu/backups/testfile

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

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

尝试:


此处的附加信息:.

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

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

    跑步

    /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 
    

    在我的例子中,cron作业正在工作,但它运行的脚本失败。失败原因是因为我在脚本的include行中使用了相对路径而不是绝对路径。

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

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

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

  • 对我来说,诀窍是什么

  • 确保crontab处于活动状态:
  • sudo服务crond状态
    
  • 通过运行以下命令重新启动crontab:
  • sudo服务crond重启
    
  • 像往常一样重新安排cron作业:
  • crontab-e
    
    这是否有帮助:我会先尝试一些简单的方法来评估问题是否出在您的命令或其他方面:即尝试放置:echo“xxx”>>/var/tmp/myfile.txt,并通过检查/var/tmp/myfile.txt和:echo“xxx”>/home/ubuntu/backups/testfile.txt来查看它是否运行过?如果将文件放入cron中,它是否能够创建该文件?@maiklos是的,这也可以。尽管如此,我还是无法让crontab工作。这件事我已经做了好几天了。好的,谢谢。我如何告诉cron在创建文件后“运行”该文件?看起来cron应该在文件放置到此处后自动拾取该文件。不幸的是,它仍然不起作用。如果您使用的是“crontab-e”,那么用户就不是必需的——它会打开vi编辑器,您可以在那里为当前用户编辑crontab。格式与根cromtab相同,但没有用户。当我在vi编辑器上按ZZ(或:wq)时,crontab开始运行。用于测试其运行情况的示例cron行:“***/usr/bin/uptime>/tmp/uptime”出现我的cron不工作的情况(守护进程正在运行,因为它正在向日志输出以下消息-
    无法使用PAM授权用户(模块未知)
    )。根据这个答案,用
    /etc/init.d/crond restart
    重新启动守护进程,cron开始工作。重新启动crond也为我做到了这一点。但不知道为什么它一开始就停止工作了。有人知道去哪里找吗?Cron日志文件没有显示任何有趣的内容。我还想找到
    无法使用PAM授权用户(模块未知)
    的实际解决方案,而不是每次重新启动Cron。我经常遇到这种情况。我只在logrotate中使用cron,所以如果驱动器开始充满f
    02 * * * * /usr/bin/wget -O /home/ubuntu/backups/testfile http://www.nytimes.com/ > /home/ubuntu/error.log 2&>1