Как я могу использовать Perl для запуска удаленного процесса и не ждать его завершения? - PullRequest
0 голосов
/ 11 сентября 2009

Я запускаю несколько командных файлов на удаленном компьютере, используя сценарий Perl, находящийся на локальном компьютере, и я хочу запускать эти командные файлы в течение длительного времени.

Проблема в том, что Perl-программа, работающая на локальном компьютере, останавливается и выполняет более поздние команды только после окончания пакетных файлов.

Я хочу запустить пакетные файлы на удаленном компьютере и выполнить остальные команды в моем скрипте Perl без остановки.

Пожалуйста, помогите мне.

Ответы [ 2 ]

2 голосов
/ 11 сентября 2009

Как у вас работают удаленные процессы? Лучший ответ, вероятно, будет зависеть от конкретной реализации. Но при условии, что вы используете что-то вроде Net :: SSH или Expect или какой-то механизм RPC, проще всего, вероятно, fork создать новый процесс для запуска удаленного задания и затем продолжить работу со своим сценарием.

my $pid = fork;
if ( ( defined $pid ) and $pid == 0 ) {       
    # child process
    do_remote_batch_jobs();
} elsif ( defined $pid ) { 
    # parent process
    do_other_stuff();
} else { 
    # fork error
    die "Unable to fork: $!";
}
1 голос
/ 11 сентября 2009

Да, вы можете использовать fork, но я думаю, что лучшим решением было бы иметь скрипт на удаленном компьютере, который принимает пакетное задание и возвращает его идентификатор.
Кроме того, текущий статус отправленного задания можно получить с помощью того же сценария. Таким образом, клиент (т.е. ваша машина) будет независим от управления заданиями.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...