[Ruby] daemons in ruby

vic ismakaev viclists at mail.esoo.ru
Wed Feb 5 08:44:40 MSK 2003


5 Февраль 2003 09:54, Ilya Palagin написал:
> vic ismakaev wrote:
> > 5 Февраль 2003 07:58, Ilya Palagin написал:
> >>Sergei Dolmatov wrote:
> >>>On Tue, Feb 04, 2003 at 02:31:55PM +0500, vic ismakaev wrote:
> >>>>Приветствую!
> >>>>А не подскажет ли мне кто: есть в природе дока/хавтушка по написанию
> >>>>демонов/tcp-серверов на Ruby?
> >>
> >>См. The Pragmatic Programmer's Guide, Network and Web Libraries.
> >
> > К сожалению, пр демонов там ничего нет :(
>
> Зато про серверы и сокеты есть. Берем скрипт и запускаем его в фоновом
> режиме, заставляя реагировать на kill.
Да, работа с сокетам там описана неплохо(для меня,начинающего)
>
> Нашел такой вот пример:
Я тоже его видел. Но в него можно наверное внести несколько 
дополнений:,добавить setsid и после него второй fork.

> From: Amos (amos+lists.ruby-talk at utdallas.edu)
> Subject: Re: daemon ruby script
> View this article only
> Newsgroups: comp.lang.ruby
> Date: 2001-05-02 06:50:14 PST
> ...
> ##
> ## Become a daemon!
> ##
> def go_daemon
>    unless Process.uid == 0
>      $stderr.puts "#{$0} must be run as root!"
>      exit!
>    end
>
>    Dir.chdir PrayConfig.wrkdr
>    File.umask 077
>    trap "SIGCLD", "IGNORE"
>
>    if $DEBUG
>      $stderr.puts "DEBUG enabled, running in foreground"
>    else
>      ## close unneeded descriptors
>      $stdin.close
>      $stdout.close
>      $stderr.close
>
>      ## drop into the background.
>      pid = fork
>      if pid
>        ## parent: save pid of child, then exit
>        File.open(PrayConfig.pidfl, "w") do |file|
>          file.puts pid
>        end
>        exit!
>      end
>
>      ## change process group and lose control tty
>      Process.setpgrp
>    end
>
>    ## Run at higher priority so that runaways won't get away, but try
>    ## not to directly compete with sched, pageout, and fsflush.
>    Process.setpriority Process::PRIO_PROCESS, Process.pid, -10
>
>    ## Initialize syslog
>    $thishost = Socket.gethostbyname(Socket.gethostname)[0]
>    $sl = Syslog.new 'pray', Syslog::LOG_PID|Syslog::LOG_CONS,
> Syslog::LOG_DAEMON
> end
>
> ##
> ## "MAIN"
> ##
> go_daemon
>
> _______________________________________________
> Ruby mailing list
> Ruby at altlinux.ru
> http://www.altlinux.ru/mailman/listinfo/ruby

-- 
С уважением
Виктор В Исмакаев



More information about the Ruby mailing list