如何使用Perl启动远程进程而不是等待它完成?

时间:2009-09-11 05:54:47

标签: perl

我使用驻留在本地计算机上的Perl脚本在远程计算机上运行多个批处理文件,并且我希望长时间运行此批处理文件。

问题是,在本地计算机上运行的Perl程序只在批处理文件结束后暂停并执行后面的命令。

我想在远程计算机上运行批处理文件,我想在不停顿的情况下执行Perl脚本中的其余命令。

请帮帮我。

2 个答案:

答案 0 :(得分:2)

您是如何运行远程进程的?最佳答案可能取决于具体实施。但假设您正在使用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 :(得分:1)

是的,您可以使用fork,但我认为更好的解决方案是在远程计算机上安装一个脚本,该脚本接受批处理作业并返回其ID。
此外,可以使用相同的脚本检索已提交作业的当前状态。 这样客户端(即您的机器)将独立于管理工作。