我正在使用Perl CGI。我在后台通过Perl CGI运行SCP命令。像
system("scp -r machinename:/PathOfFile/ /Path/WhereToCopyIt/ &")
此复制过程需要一些时间,比方说15分钟。 现在我希望在此复制过程完成后再发送电子邮件给我。 但我的问题是这个命令在后台运行。那我怎么发邮件呢? 我知道如何发送邮件但我不知道当进程在后台运行时如何发送邮件。
答案 0 :(得分:5)
为什么不fork
?
my $pid = fork;
if ( $pid == 0 ) { # Child
exec( ... ); # Without the '&'
exit( $? >> 8 );
}
else { # Parent
waitpid $pid, 0;
}
有关更多(可能太多?)的信息,请参阅perldoc perlfork
和perldoc perlipc
。
答案 1 :(得分:1)
启动后台作业,按顺序执行操作。基本上
system(qq'sh -c "scp -r machinename:/PathOfFile/ /Path/WhereToCopyIt/;
echo Done | /sendmail you@example.net" &')
您可能希望将后台脚本封装到单独的文件中,或者至少添加一些错误检查。