Forum Webscript.Ru
Программирование => Perl => Тема начата: Slike от 30 Марта 2005, 12:45:31
-
как заставить работать скрипт на сервере в бекграунде
то есть из командной строки запускаем скрипт, отключаемся от сервера, затем снова коннектимся и имеем управление над скриптом ?
:beer:
-
Не совсем понятно, что именно понимается под управлением.
-
хотя управление тут одно - убить процесс
-
Вот простая функция для перевода скрипта в дэмон. Отключаешься, забываешь а нем вообще - потом можешь придти и кильнуть его. :)
Принимает в качестве аргумента ссылку на хэш. Это кусок кода из 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;
}
-
кстати, а как найти перловые процессы ?
-
ps awx | grep perl