J'ai un script Perl assez simple, que dans une fonction effectue les opérations suivantes:script Perl est se faire tuer pendant le sommeil()
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;
}
Pour une raison quelconque, parfois (comme 1 en 3 courses) le script obtient tué. Je ne sais pas qui est responsable de la mise à mort, je sais juste que cela arrive pendant l'appel de "sommeil".
Quelqu'un peut-il me donner un indice ici? Après le script est tué, son travail n'est pas fait, ce qui est un gros problème.
Merci.
est-ce que cela est exécuté depuis la console ou depuis Apache? si c'est à partir d'Apache, jetez un coup d'œil à l'option timeout ... il pourrait également y avoir une erreur quelque part dans vos fonctions que vous ne traitez pas et puisque nous ne voyons pas le reste du code que nous ne pouvons pas vraiment dire. Si vous appelez depuis le navigateur et que vous utilisez Apache ou similaire, vous pouvez aussi vérifier le journal error_log et voir s'il contient quelque chose qui pourrait vous aider ... – Prix
il est exécuté à partir de la console. Le script fait partie de l'encapsuleur d'installation, qui est utilisé pour installer un logiciel simple. Le script s'exécute en dernier et son but est de vérifier que le logiciel est en place (c'est ce que legato_is_up() fait). Le système d'exploitation est Red Hat AS3, avec une distribution standard. – Alex
Êtes-vous, par hasard, sur Dreamhost? Ils ont tendance à tuer les processus persistants. – Schwern