2009-11-18 4 views
1

루비 젬 데몬을 설치했습니다. 작동하는지 확인하기 위해 매 5 초마다 파일로 인쇄하는 스크립트를 만들었습니다. 그런 다음 http://daemons.rubyforge.org/에있는 추가 정보에서 제공하는 간단한 예제를 사용하여 스크립트를 실행할 다른 파일을 만들었습니다. 나는 루비 젬과 데몬을 모두 필요로한다. 그런 다음 'ruby mycontrol.rb start'라고 입력합니다. 그들이 사용하는 예제에는 '(myserver.rb가 현재 백그라운드에서 실행 중입니다.')라는 메시지 유형이 있습니다. 그러나이 메시지는 표시되지 않지만 오류는 발생하지 않습니다. 내가 'ps -u myusername'을 수행하면 데몬 화 될 파일이 프로세스에 나열되지만 파일에 아무 것도 쓰여지지 않아 실행중인 것처럼 보입니다. 여기 루비 대몬 젬

내 소스 :

# this is mycontrol.rb 

require 'rubygems' 
require 'daemons' 

Daemons.run(daemon.rb) 

및 ...

# this is daemon.rb 

loop do 
open('file.out', 'w') do |f| 
    f.puts 'hello everybody' 
end 
sleep(3) 
end 

합니까 내가 잘못 것으로 당신의에서 점프를하고있어 무엇?

덕분에, 토니

+0

가독성을 높이기 위해 코드를 4 자리 띄어쓰기하여 다시 포맷 할 수 있습니까? –

답변

4

나는 당신의 예를 시도하고 그것은 (데몬 버전 1.0.10 리눅스에 루비 1.8.6)을 나를 위해 작동합니다. 그러나 다음과 같은 문제가 발생 될 수 있습니다 : 나는 daemonized 과정 (daemon.rb가) /의 현재 작업 디렉토리로 시작되는 것을 발견

  • . mycontrol.rb 또는 daemon.rb을 포함하는 디렉토리를 실행할 때 현재 디렉토리가 아닙니다. 루트가 아닌 사용자로 실행하면 프로세스에 파일을 쓸 수있는 권한이 없음을 의미합니다. 파일 이름을 /tmp/file.out으로 변경했으며 파일이 예상 된 내용으로 생성되었습니다.

  • 쓰기 전용 ('w') 모드에서 file.out을 열었습니다. 즉, 3 초마다 잘리고 다시 작성됩니다. 추가 ('a') 모드에서 파일을 열면 추가 3 초마다 hello everybody 행이 파일에 기록됩니다.

'백그라운드에서 실행 중입니다.'라는 메시지가 표시되지 않습니다. 출력을 나타 내기보다는 일어난 것이 무엇인지를 설명하기 위해 문서에 포함되어 있다고 가정합니다.

관련 문제