2016-06-11 61 views
0

我有一些Rails 4應用程序與一些cronjobs。我已將應用程序遷移到新的debian服務器。此刻我從Cronjobs那裏得到了這個錯誤。Rails的cronjob問題

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分別設置,並與時

看起來是這樣的部署:貓/.bashrc的

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

visudo命令 enter image description here

結果 enter image description here

UPDATE

從工作機 enter image description here

+0

通常,這是因爲你的sudoers文件有一行'Defaults requiretty'。只是評論一下。 – fedorqui

+0

我在哪裏可以找到這個文件? – Felix

+0

作爲root用戶,輸入'visudo'。要非常小心地編輯這個文件,因爲它是向非root用戶授予root權限的文件。 – fedorqui

回答

1

東西的.bashrc正在努力讀書,或在希望它是一個TTY的方式上STDIN操作。

如果在另一臺機器上沒有發生這種情況,它可能是你的rc文件中的東西(因爲你已經表明你想讓bash充當登錄shell,並且它的作用與-l一樣)。

檢查新機器上的~/.bashrc和可比較的文件。

+0

以上添加visudo我在哪裏可以找到rcfile? – Felix

+0

已更新上述問題。 – Felix

+0

rcfile將位於正在運行cron的用戶的主目錄中。在那臺機器上,如果你運行'cat〜/ .bashrc',輸出是什麼?如果該文件不存在,用戶主目錄中可能會有其他類似名稱的隱藏文件。我假設您以運行cron作業的用戶身份登錄。 –