2011-03-09 2 views
8

rvm (system-wide)에 의해 루비를 설치하고 일반 콘솔을 통해 올바르게 작동하고 내 레일 프로그램이 rails runnerapache2+passenger과 함께 올바르게 작동합니다.#!/usr/bin/env ruby가 crontab에서 작동하지 않는 이유는 무엇입니까?

/usr/bin/env: ruby: No such file or directory 

누구나의 crontab의 이유는/usr/빈/ENV 나던 일을 알고있다 : 나는 rails runner foo.bar라는 크론 탭에서 지금

는 신중 내가 볼 로그를 검사, 포기?

답변

7

당신이 RVM을 통해 루비를 설치 한 경우, 루비는 아마되지는/usr/bin에있다. RVM가 설치된 위치에 따라 :

bash -c "source /usr/local/lib/rvm" && rails runner foo.bar 

당신은 아마 올바른 RVM 로딩 스크립트입니다 귀하의 bashrc에에 소스 */RVM을 추가했다.

+0

이유를 알게되었습니다 : 루비가 crontab 쉘에 등록되지 않았습니다./bin/bash -c "source/usr/local/rvm/src/rvm/scripts/rvm &&/root/a/ararails/script/rails runner Foo.bar" – c2h2

4

cron이 사용자 환경을 물려받지 않습니다. "$ PATH"를 파일에 에코하여 설정 한 내용을 확인하십시오.

당신 수도 바로 할 "PATH =는/usr/빈/루비 & & foo.rb"

+1

이것은'/ usr/bin/ruby ​​foo.rb'로되어 있습니까? '$ PATH'를 디렉토리 목록 대신 파일 이름으로 설정하는 것은 잘 작동하지 않을 것입니다. – geekosaur

+0

u는 PATH, GEM_PATH와 다른 모든 것들을 필요로합니다 ... – c2h2

0

비슷한 문제가있었습니다. Cron은 사용자에게 기대하는 PATH 설정을 사용하지 않고 (사용자로 로그인 할 때) 기본적으로 명령을 실행하는 것처럼 보입니다. 실제로 기본 PATH 설정 (/ etc/profile 또는 다른 위치에있는 설정)을 사용하는 것조차 보이지 않았습니다.

스와 -c '하려면 printenv PATH'userX

을 출력 :

내가 다음 명령을 사용하여 문제를 발견 할 수 있었다 (첫 번째는 크론 명령을 실행하는 것 방법입니다) :/usr/지방/빈 :는/usr/빈/빈 :는/usr/게임

스와 -l userX -c '하려면 printenv PATH'

,

출력 : /opt/ruby-enterprise-1.8.7-2010.02/bin/:/opt/ruby-enterprise-1.8.7-2010.02/bin/:/usr/local/bin:/usr/bin :/bin :/usr/games

첫 번째 명령은 베어 시스템 기본값을 제외하고 어떤 식 으로든 PATH 변수를 채우지 않는 것 같습니다. 필자의 경우 필자는 필요한 (REE) 경로를 /etc/login.defs에 추가하여이 문제를 해결했습니다. 기본값은 다음과 같습니다 :

/etc/login.defs:103:ENV_PATH PATH =/usr/usr/bin :/bin :/usr/games

+0

다음을 수행해야합니다. 루비 env, rvm을 사용하는 경우, 모든 GEM, GEM_HOME 및 PATH 정보를 내보낼 필요가 있습니다. – c2h2

관련 문제