The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"Не получается демонизировать скрипт"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"Не получается демонизировать скрипт" 
Сообщение от kran emailИскать по авторуВ закладки(??) on 16-Май-05, 01:19  (MSK)
Всем здравствуйте. Есть проблема. У меня RH 9 По какой-то причине скрипт не желает демонизироваться. Я использую модуль Proc::Daemon Сам скрипт следующий
#!/usr/bin/perl

use Proc::Daemon;
Proc::Daemon::Init;

while(1)
{
        sleep(1);
}

Запускаю. Смотрю: ps -A | grep testdaemon - пусто, нет его. В /var/run тоже ничего. Пытался переоткрыть STDERR в файл - тоже ничего. Ошибок нет.
Вроде все написано согласно perldoc, но в чем ошибка не пойму. Может кто укажет, в какую сторону копать?

  Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

Индекс форумов | Темы | Пред. тема | След. тема
Сообщения по теме

1. "Не получается демонизировать скрипт" 
Сообщение от ACCA Искать по авторуВ закладки(ok) on 16-Май-05, 09:38  (MSK)
>Всем здравствуйте. Есть проблема. У меня RH 9 По какой-то причине скрипт
>не желает демонизироваться. Я использую модуль Proc::Daemon Сам скрипт следующий

Попробуй сделать попроще:

#!/usr/bin/perl

close STDIN;
close STDOUT;
close STDERR;

while(1)
{
        sleep(1);
}

После этого сделай:

prompt@host$ testdaemon &

Можно ещё проще - ничего не закрывать, будет не намного хуже.

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "Не получается демонизировать скрипт" 
Сообщение от kran emailИскать по авторуВ закладки(??) on 16-Май-05, 10:02  (MSK)
>>Всем здравствуйте. Есть проблема. У меня RH 9 По какой-то причине скрипт
>>не желает демонизироваться. Я использую модуль Proc::Daemon Сам скрипт следующий
>
>Попробуй сделать попроще:
>
>#!/usr/bin/perl
>
>close STDIN;
>close STDOUT;
>close STDERR;
>
>while(1)
>{
>        sleep(1);
>}
>
>После этого сделай:
>
>prompt@host$ testdaemon &
>
>Можно ещё проще - ничего не закрывать, будет не намного хуже.

А как же рожать потомков и управлять демоном?

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

3. "Не получается демонизировать скрипт" 
Сообщение от PoizOn emailИскать по авторуВ закладки(ok) on 16-Май-05, 10:58  (MSK)
>>>Всем здравствуйте. Есть проблема. У меня RH 9 По какой-то причине скрипт
>>>не желает демонизироваться. Я использую модуль Proc::Daemon Сам скрипт следующий
>>
>>Попробуй сделать попроще:
>>
>>#!/usr/bin/perl
>>
>>close STDIN;
>>close STDOUT;
>>close STDERR;
>>
>>while(1)
>>{
>>        sleep(1);
>>}
>>
>>После этого сделай:
>>
>>prompt@host$ testdaemon &
>>
>>Можно ещё проще - ничего не закрывать, будет не намного хуже.
>
>А как же рожать потомков и управлять демоном?


Вот простая функция для перевода скрипта в дэмон. Отключаешься, забываешь а нем вообще - потом можешь придти и кильнуть его.
Принимает в качестве аргумента ссылку на хэш. Это кусок кода из IRC::Bot скрипта.

sub daemon {

    my $self = shift;

    my @fh = ( \*STDIN, \*STDOUT );

    my $path;
    $self->{'LogPath'} eq 'null' ? $path = $ENV{'HOME'} : $path =
      $self->{'LogPath'};
    open \*STDERR, ">$path/error.log";
    select( ( select( \*STDERR ), $| = 1 )[0] );

    my $ppid = $$;

    my $pid = fork && exit 0;

    !defined $pid && croak "No Fork: ", $!;

    while ( kill 0, $ppid ) {
        select undef, undef, undef, .001;
    }

    my $session_id = POSIX::setsid();
    chdir '/' || croak "Could not cd to /", $!;
    my $oldmask = umask 00;
    close $_ || croak $! for @fh;

}

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

4. "Не получается демонизировать скрипт" 
Сообщение от kran emailИскать по авторуВ закладки(??) on 16-Май-05, 11:19  (MSK)
>>>>Всем здравствуйте. Есть проблема. У меня RH 9 По какой-то причине скрипт
>>>>не желает демонизироваться. Я использую модуль Proc::Daemon Сам скрипт следующий
>>>
>>>Попробуй сделать попроще:
>>>
>>>#!/usr/bin/perl
>>>
>>>close STDIN;
>>>close STDOUT;
>>>close STDERR;
>>>
>>>while(1)
>>>{
>>>        sleep(1);
>>>}
>>>
>>>После этого сделай:
>>>
>>>prompt@host$ testdaemon &
>>>
>>>Можно ещё проще - ничего не закрывать, будет не намного хуже.
>>
>>А как же рожать потомков и управлять демоном?
>
>
>Вот простая функция для перевода скрипта в дэмон. Отключаешься, забываешь а нем
>вообще - потом можешь придти и кильнуть его.
>Принимает в качестве аргумента ссылку на хэш. Это кусок кода из IRC::Bot
>скрипта.
>
>sub daemon {
>
>    my $self = shift;
>
>    my @fh = ( \*STDIN, \*STDOUT );
>
>    my $path;
>    $self->{'LogPath'} eq 'null' ? $path = $ENV{'HOME'} : $path =
>      $self->{'LogPath'};
>    open \*STDERR, ">$path/error.log";
>    select( ( select( \*STDERR ), $| = 1
>)[0] );
>
>    my $ppid = $$;
>
>    my $pid = fork && exit 0;
>
>    !defined $pid && croak "No Fork: ", $!;
>
>
>    while ( kill 0, $ppid ) {
>        select undef, undef, undef,
>.001;
>    }
>
>    my $session_id = POSIX::setsid();
>    chdir '/' || croak "Could not cd to
>/", $!;
>    my $oldmask = umask 00;
>    close $_ || croak $! for @fh;
>
>}
Большое спасибо. Все заработало

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх


Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ]
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру