首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Perl脚本在睡眠期间被终止()

Perl脚本在睡眠期间被终止()
EN

Stack Overflow用户
提问于 2010-07-16 03:44:28
回答 1查看 648关注 0票数 2

我有一个非常简单的perl脚本,它在一个函数中执行以下操作:

代码语言:javascript
复制
    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次)脚本被终止。我不知道是谁杀的,我只知道它发生在“睡眠”呼叫期间。

有人能在这里给我一个提示吗?脚本被杀死后,它的工作还没有完成,这是一个大问题。

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-07-16 03:58:49

在不知道您的系统上还运行着什么的情况下,这是任何人的猜测。您可以添加一个信号处理程序,但它会告诉您的是哪个信号(以及何时),而不是谁发送的:

代码语言:javascript
复制
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的输出,那么您可能还需要考虑添加一个警告和死处理程序。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3259350

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档