我有一个非常简单的perl脚本,在一个函数中执行以下操作:
if ( legato_is_up() ) {
write_log("INFO: Legato is up and running. Continue the installation.");
$wait_minutes = $WAITPERIOD + 1;
$legato_up = 1;
}
else {
my $towait = $WAITPERIOD - $wait_minutes;
write_log("INFO: Legato is not up yet. Waiting for another $towait minutes...");
sleep 30;
$wait_minutes = $wait_minutes + 0.5;
}
出于某种原因,有时(如3次运行中的1次)脚本被杀死。我不知道谁对杀人负责,我只知道它发生在“睡眠”电话中。
有人能在这里给我一个提示吗?脚本被杀后,它的工作没有完成,这是一个大问题。
感谢。
答案 0 :(得分:1)
不知道你的系统上还有其他什么,这是任何人的猜测。你可以添加一个信号处理程序,但它会告诉你的是它是什么信号(以及何时),但不是谁发送它:
foreach my $signal (qw(INT PIPE HUP))
{
my $old_handler = $SIG{$signal};
$SIG{$signal} = sub {
print time, ": ", $signal, " received!\n";
$old_handler->(@_) if $old_handler;
};
}
如果您没有记录stderr的输出,您可能还需要考虑添加WARN和DIE处理程序。