【问题标题】:Rails cronjob problemsRails cronjob 问题
【发布时间】:2016-10-12 09:21:37
【问题描述】:

我有一个带有一些 cronjobs 的 Rails 4 应用程序。我已将该应用程序迁移到新的 debian 服务器。目前我从 Cronjobs 收到了这个错误。

stdin: is not a tty

一个 cronjob 看起来像这样:

17,34,51 * * * * /bin/bash -l -c 'cd /var/www/html/myapp && RAILS_ENV=production bundle exec rake crons:mark_as_done --silent >> log/cron.log 2>&1'

问题出在哪里?在我的旧机器上我没有遇到这个问题。

非常感谢

cronjobs 在 scedule.rb 中设置并随时部署

看起来像这样:

every 13.minutes do
  rake "crons:generate_m", :environment => :production
end

visudo

cat /.bashrc 的结果

更新

来自工作机器的 bashrc

【问题讨论】:

  • 通常,这是因为您的 sudoers 文件中有一行 Defaults requiretty。只需将其注释掉。
  • 在哪里可以找到这个文件?
  • 作为 root 用户,输入visudo。编辑此文件时要非常小心,因为它是授予非 root 用户 root 权限的文件。
  • 我也可以用 nano 编辑这个文件吗?
  • 没问题,直接说EDITOR=/usr/bin/nano visudo

标签: ruby-on-rails ruby-on-rails-4 cron crontab whenever


【解决方案1】:

某些东西正试图以期望它是 TTY 的方式读取或操作 STDIN。

如果这在另一台机器上没有发生,则可能是您的 rcfile 中的某些内容(正在加载该文件,因为您已指示您希望 bash 充当带有 -l 的登录 shell)。

检查新机器上的~/.bashrc 和类似文件。

【讨论】:

  • 在哪里可以找到 rcfile?
  • rcfile 将位于运行 cron 的用户的主目录中。在那台机器上,如果你运行cat ~/.bashrc,输出是什么?如果该文件不存在,则用户的主目录中可能还有其他类似名称的隐藏文件。我假设您以运行 cron 作业的用户身份登录。
  • 我在上面添加了cat~/.bashrc的输出
  • 也添加了工作的。我可以注释掉这两个别名吗?
猜你喜欢
  • 1970-01-01
  • 2016-01-09
  • 1970-01-01
  • 2021-11-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-14
  • 2021-03-30
相关资源
最近更新 更多