gpt4 book ai didi

perl - Perl-如果系统命令失败或运行时间过长,如何停止它或运行另一个系统调用?

转载 作者:行者123 更新时间:2023-12-03 08:30:36 26 4
gpt4 key购买 nike

我有一个Perl脚本,该脚本在某些时间执行许多其他脚本。

这些其他脚本有时可能会永久挂起或完全挂起,但是目前尚无办法判断这些其他脚本是否这样做。

如何实现一种检查脚本运行时间是否太长(以便用户可以采取措施)或彻底失败的方法。可以将计划作为电子邮件发送给适当的用户,通知他们。

下面的系统调用示例:

elsif ($job_type eq 'script') { 
system("perl $job_dir/$job_args > $work_dir/$job_name.out 2> work_dir/$job_name.err");
}

最佳答案

使用 alarm :

eval {
local $SIG{ALRM} = sub { die "alarm\n" }; # NB: \n required
alarm 120; # 2 Minute timeout

system("perl $job_dir/$job_args > $work_dir/$job_name.out 2> work_dir/$job_name.err");

alarm 0;
};
if ($@) {
die unless $@ eq "alarm\n"; # Propagate unexpected errors

# Timed out - Send out email to user
...

} else {
# Successfully ran command. Any cleanup here.
...
}

关于perl - Perl-如果系统命令失败或运行时间过长,如何停止它或运行另一个系统调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25547457/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com