Crontab + Ruby on Rails: /usr/bin/env: ruby: 해당 파일이나 디렉터리가 없습니다.

Crontab + Ruby on Rails: /usr/bin/env: ruby: 해당 파일이나 디렉터리가 없습니다.

Ruby on Rails 애플리케이션이 있고 rake 작업을 위해 crontab을 예약해야 합니다.

*/5 * * * * RAILS_ENV=production /usr/local/bin/rake -f /usr/local/www/mysite-web-production/current/Rakefile my_site:export_products >> /var/log/export_feed.log 3>&1

그러나 작동하지 않으며(수동으로 수행하면 작동하지만 crontab으로는 작동하지 않음) /usr/bin/env: ruby: No such file or directoryRVM을 사용하지 않는다는 메시지가 표시됩니다. 저는 Linux에서 Ruby 1.9.3과 Rails 3을 사용하고 있습니다.

답변1

$PATHRuby가 어디에 있든 존재 하지 않습니다 cron. 를 ruby실행하여 실제 위치를 찾으세요 type -a. 그런 다음 $PATHcrontab의 환경 변수 에 경로를 추가합니다 .

type -a예를 들어 표시된 경로가 다음 ruby과 같다 면 /usr/local/bin/ruby(그리고 경로로 판단하면 rake아마도 그럴 것임) crontab은 다음과 같아야 합니다.

PATH=$PATH:/usr/local/bin
*/5 * * * * RAILS_ENV=production /usr/local/bin/rake -f /usr/local/www/mysite-web-production/current/Rakefile my_site:export_products >> /var/log/export_feed.log 3>&1

아니면:

*/5 * * * * RAILS_ENV=production PATH=$PATH:/usr/local/bin /usr/local/bin/rake -f /usr/local/www/mysite-web-production/current/Rakefile my_site:export_products >> /var/log/export_feed.log 3>&1

둘 다 작동해야합니다.

관련 정보