2012-05-30 2 views
0

rake sunspot을 실행하고 싶습니다 : 4 시간마다 다시 색인 RAILS_ENV = 생산 명령. 이것을 달성하기 위해 쉘 프로그래밍을 사용하여 간단한 bash 스크립트를 작성했습니다. 터미널에서 성공적으로 실행하지만 crontab에서 실행하려고하면 작동하지 않습니다. 사용중인 운영 체제는 centos입니다.4 시간마다 백그라운드에서 흑점 재 색인을 실행하는 방법

다음은이 문제를 해결하기 위해 도와주세요 내 bash는 스크립트 코드

#!/bin/bash 
#export PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin 
export PATH=/usr/local/rvm/gems/ruby-1.9.2-p290/bin:/usr/local/rvm/gems/[email protected]/bin:/usr/local/rvm/rubies/ruby-1.9.2-p290/bin:/usr/local/rvm/bin:/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/root/bin: 
echo "started" 
cd /var/www/html/spotchase2 
pwd 
source /usr/local/rvm/environments/ruby-1.9.2-p290 
bundle install 
if [ "$?" = 0 ]; then 
    echo `date` 
fi 
source /usr/local/rvm/environments/ruby-1.9.2-p290 
#/usr/local/rvm/gems/ruby-1.9.2-p290/bin/rake sunspot:reindex RAILS_ENV=production 
rake sunspot:reindex RAILS_ENV=production 
if [ "$?" = 0 ]; then 
    echo "complete" 
fi 

입니다.

편집

I 출력 한 텍스트 파일을 리디렉션하고 있습니다. 이 텍스트 파일을 시작하기 만하면 설치 및 날짜 묶음이 생깁니다. 완전한 메시지를 얻지 못해서, 나는 그것이 작동하지 않고 그 텍스트 파일에 어떤 오류도 나타나지 않는다는 것을 알게되었다.

이 문제를 해결하는 데 도움을주십시오.

+0

문제점은 무엇입니까? 오류 메시지가 나타 납니까? 왜 작동하지 않는다고하니? – tripleee

답변

2

일반적으로 다음과 같이 처리하려면 whenever gem을 사용합니다. 나는 bash 스크립트를 작성할 필요가 없다. 레이크 스크립트는 충분하다. Whenever은 crontab에 대한 올바른 구문을 생성합니다.

내 프로젝트에는 백그라운드에서 항상 실행해야하는 몇 가지 스크립트가 있습니다. 다음은 contab 파일을 생성하는 명령입니다.

whenever --update-crontab --set environment=production --load-file config/schedule_client.rb --user ubuntu 

그리고 이런 식으로 생성됩니다.

0 2 * * * /bin/bash -l -c 'source /home/ubuntu/.rvm/scripts/rvm && cd /var/www/yoolk_statistics_api && RAILS_ENV=production bundle exec rake statistics:generate_clienst --silent >> log/client.log 2>&1' 

확실히 내 crontab을 항상 내가 그것을 실행 중이거나 아니에요 볼 수 있도록 나는 로그 파일에 출력을 리디렉션 작동하게합니다. 내 우분투 서버에서는 보통 디버그를 위해 syslog file을 확인합니다.

+0

고마워요 @ 캠넌, 당신의 대답은 제게 많은 도움이됩니다. –

+0

당신을 진심으로 환영합니다. – Chamnap