我使用驻留在本地计算机上的Perl脚本在远程计算机上运行多个批处理文件,并且我希望长时间运行此批处理文件。
问题是,在本地计算机上运行的Perl程序只在批处理文件结束后暂停并执行后面的命令。
我想在远程计算机上运行批处理文件,我想在不停顿的情况下执行Perl脚本中的其余命令。
请帮帮我。
答案 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。
此外,可以使用相同的脚本检索已提交作业的当前状态。
这样客户端(即您的机器)将独立于管理工作。