2012-12-08 4 views
2

나는 요리사 요리 책에서 데몬으로 SASS --watch를 시작하는 것에 대한 지침을 원했습니다. 다음은 트릭을 수행하지 않는 것 같습니다 :요리사 요리 책에서 데몬으로 SASS 시작

lib="/vagrant/lib" 
sassPath="#{lib}/sass" 

include_recipe 'ruby' 

execute 'install-sass' do 
    command 'gem install sass' 
end 

execute "mkdir-lib" do 
    not_if {File.exists?(lib)} 
    command "mkdir #{lib}" 
end 

execute "mkdir-sass" do 
    not_if {File.exists?(sassPath)} 
    command "mkdir #{sassPath}" 
end 

execute "create-procfile" do 
    command "nohup sass --watch #{sassPath}:#{lib} &" 
end 

요리사가 성공적으로 완료되었습니다. 서비스로 예리하게 달리는 방법 인 것처럼 보이지 않습니다. 요리사에서

출력 : 당신이 명령을 실행하면

[default] Running chef-solo... 
stdin: is not a tty 
[2012-12-19T19:39:44+00:00] INFO: *** Chef 10.14.2 *** 
[2012-12-19T19:39:27+00:00] INFO: Setting the run_list to ["recipe[ruby]",   "recipe[sass]"] from JSON 
[2012-12-19T19:39:27+00:00] INFO: Run List is [recipe[ruby], recipe[sass]] 
[2012-12-19T19:39:27+00:00] INFO: Run List expands to [ruby, sass] 
[2012-12-19T19:39:27+00:00] INFO: Starting Chef Run for precise64 
[2012-12-19T19:39:27+00:00] INFO: Running start handlers 
[2012-12-19T19:39:27+00:00] INFO: Start handlers complete. 
[2012-12-19T19:39:27+00:00] INFO: Processing execute[apt-update] action run (ruby::default line 1) 
[2012-12-19T19:39:40+00:00] INFO: execute[apt-update] ran successfully 
[2012-12-19T19:39:40+00:00] INFO: Processing package[ruby] action install (ruby::default line 5) 
[2012-12-19T19:39:57+00:00] INFO: Processing execute[install-sass] action run (sass::default line 6) 
[2012-12-19T19:40:54+00:00] INFO: execute[install-sass] ran successfully 
[2012-12-19T19:40:54+00:00] INFO: Processing execute[mkdir-lib] action run (sass::default line 10) 
[2012-12-19T19:40:54+00:00] INFO: Processing execute[mkdir-sass] action run (sass::default line 15) 
[2012-12-19T19:40:54+00:00] INFO: Processing execute[create-procfile] action run (sass::default line 20) 
[2012-12-19T19:40:54+00:00] INFO: execute[create-procfile] ran successfully 
[2012-12-19T19:40:54+00:00] INFO: Chef Run complete in 87.021831 seconds 
[2012-12-19T19:40:54+00:00] INFO: Running report handlers 
[2012-12-19T19:40:54+00:00] INFO: Report handlers complete 
+0

셰프 런 결과를 첨부 할 수 있습니까? 그것은 경로에 싫증나 지 않는 것처럼 간단 할 수 있습니다. – nictrix

+0

어떤 요리사 출력을보고 싶습니까? 또한 명확하게하기 위해 가상 시스템에 ssh 인 경우 SASS -watch를 시작할 수 있지만 개입 할 필요없이 직접 실행하여 셰프 스크립트에서 실행하고 싶습니다. – seagoj

+0

이것에 대한 해결책을 찾았습니까? 나는 비슷하게 마주보고있다 – av501

답변

0

, 그 명령은 부모 요리사 클라이언트 프로세스의 child process로 실행됩니다. linux-land에서 자식 프로세스는 부모가 죽으면 종료됩니다.

Chef Client를 스크립트 (예 : cron 또는 수동)로 실행하는 경우 상위 프로세스는 해당 스크립트입니다. 그래서 자식 프로세스를 배경으로하더라도 부모 프로세스가 죽으면 죽게됩니다. 이 경우 Chef Client 실행이 완료되면 발생합니다.

&으로 백그라운드에서 실행중인 스크립트는 특히 프로덕션 환경에서는 권장되지 않습니다. 대신 SASS 감시자를 init.d 또는 서비스로 포장 한 다음 Chef의 기본 service 리소스를 사용해야합니다.

또한 프로세스가 부모로부터 분리되어 실행 완료 후 생존 할 수있게하는 SASS 감시자를 악의적으로 보게 될 수도 있습니다. 그러나 이렇게하면 PID 파일을 수동으로 관리해야합니다. 그렇지 않으면 Chef Client가 실행하는 새 프로세스를 돌립니다.

관련 문제