Forum Webscript.Ru

Программирование => Perl => Тема начата: Slike от 30 Марта 2005, 12:45:31

Название: работа скрипта на сервере в бекграунде
Отправлено: Slike от 30 Марта 2005, 12:45:31
как заставить работать скрипт на сервере в бекграунде

то есть из командной строки запускаем скрипт, отключаемся от сервера, затем снова коннектимся и имеем управление над скриптом ?

:beer:
Название: работа скрипта на сервере в бекграунде
Отправлено: Ivan Kolesnikov от 30 Марта 2005, 12:57:35
Не совсем понятно, что именно понимается под управлением.
Название: работа скрипта на сервере в бекграунде
Отправлено: Slike от 30 Марта 2005, 19:05:16
хотя управление тут одно - убить процесс
Название: работа скрипта на сервере в бекграунде
Отправлено: cr4ck3r от 31 Марта 2005, 10:19:45
Вот простая функция для перевода скрипта в дэмон. Отключаешься, забываешь а нем вообще - потом можешь придти и кильнуть его. :)
Принимает в качестве аргумента ссылку на хэш. Это кусок кода из 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;

}
Название: работа скрипта на сервере в бекграунде
Отправлено: Slike от 01 Апреля 2005, 12:33:53
кстати, а как найти перловые процессы ?
Название: работа скрипта на сервере в бекграунде
Отправлено: NeoNox от 01 Апреля 2005, 13:42:50
ps awx | grep perl