0

나는 resque 보석을 사용하고, 나는 다음과 같은 명령을 통해 작업을 실행 해요 :Rails의 Amazon EC2 인스턴스에서 장기 실행 작업을 실행하는 방법은 무엇입니까?

rake resque:work QUEUE='*' 

그러나 문제는 : 원격 서버 내 SSH 연결이 끊길 때, 또는 내가 SSH 세션 창을 닫습니다 즉, 프로세스 rake resque:work QUEUE='*'을 실행하면 작업 실행이 중지됩니다.

작업을 독립적으로 실행할 수있는 방법이 필요합니다. SSH를 통해 연결 상태를 유지할 필요가 없습니다. 방법이 있습니까? 또는 내가 필요한 것을 성취하기 위해이 절차를 따라야합니까?

답변

1

이렇게하려면 배경에서 레이크 작업을 실행할 수 있습니다. 이것을 달성하는 방법은 여러 가지가 있습니다. 그중 두 명은 여기에 있습니다 :

  1. 데몬을 사용하면 백그라운드에서 레이크 작업을 실행할 수 있습니다. 데몬이란 무엇입니까 link입니다. 여기에 link입니다, 어떻게 레일 레이크 작업을 위해 이것을 달성하십시오. 레이크 작업에 &을 추가하는 것이 좋습니다.

  2. 레이크 작업을 개별적으로 실행하는 cron을 구현합니다.

+0

죄송합니다.이 기능을 처음 사용하고 있습니다. 언제든지 cron을 쉽게 실행할 수있는 보석이 있어야합니까? –

+0

예. 서버에 cron을 설치할 때마다 필요합니다. 'rake resque : work QUEUE = '*'&'시도하지 않았습니까? 이것은 당신이 실행해야합니다. –

+0

적절한 해결책을 찾으려면 http://stackoverflow.com/questions/26260733/how-to-daemonize-rails-rake-task-on-elastic-beanstalk-startupup을 읽어야합니다. –

3

백그라운드에서 작업을 실행하는 또 다른 방법은 screen입니다. 필요한만큼의 셸 세션을 생성하며 초기 세션에서 분리 할 수 ​​있습니다. 실행 :

screen 이 (여기 당신이 세션 동안, 초기 쉘 세션으로 돌아 D +

/path/to/your/script > /path/to/log_file

Ctrl + A, Ctrl 키 (새 쉘 세션에있을거야) 당신 스크립트가 계속 실행되기 시작했습니다.

tail -f /path/to/log_file까지 진행 상황을 볼 수 있고 로그 오프했다가 다시 로그온 할 수 있습니다. 분리 된 세션으로 돌아가려면 screen -r을 실행하십시오.

screen이 설치되어 있지 않은 경우 yum install screen이 실행됩니다. Ubuntu에 대해 확실하지 않으면 아마도 apt-get install screen이 될 것입니다. 자세한 내용은 man screen을 실행하십시오.

관련 문제