几天后Perl进程消失了

时间:2014-03-04 08:30:11

标签: perl centos rhel

我有一个perl文件( test.pl )。

它将以重复的方式工作。 该文件的目的是发送来自DB的电子邮件

以下是test.pl中的代码

sub send_mail{

$db->connect();

# Some DB operations #
# Send mail #

$db->disconnect();
sleep(5);

send_mail();

}

send_mail();

Iam执行此文件的5个实例,如下所示

perl test.pl  >> /var/www/html/emailerrorlog/error1.log 2>&1 &
perl test.pl  >> /var/www/html/emailerrorlog/error2.log 2>&1 &
perl test.pl  >> /var/www/html/emailerrorlog/error3.log 2>&1 &
perl test.pl  >> /var/www/html/emailerrorlog/error4.log 2>&1 &
perl test.pl  >> /var/www/html/emailerrorlog/error5.log 2>&1 &

如果我执行命令ps -ef | grep perl | grep -v grep

我可以看到上面提到的perl文件的5个实例

该文件将在几天内完美运行

但是过了几天,perl进程将逐渐消失。

几天后,所有过程都会消失。 现在。如果我执行命令ps -ef | grep perl | grep -v grep,我看不到任何进程,

我在日志文件中看不到任何错误日志。

那么,可能有什么机会消失perl进程?

我该如何调试它?

我在哪里可以看到perl错误日志?

它在Centos和Red Hat Linux中存在同样的问题

有人有想法吗?

1 个答案:

答案 0 :(得分:5)

我不是100%确定这是否是问题,但如果你在一个永久执行的进程中避免递归,它可能会有所帮助...这会慢慢增加堆栈的使用,并最终在堆栈大小限制时终止进程达到。

尝试这样的事情:

sub send_mail{

   $db->connect();

   # Some DB operations #
   # Send mail #

   $db->disconnect();

}

while (1) {
   send_mail();
   sleep(5);
}