几天后Perl进程消失了

Lin*_*nto 1 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();
Run Code Online (Sandbox Code Playgroud)

我执行此文件的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 &
Run Code Online (Sandbox Code Playgroud)

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

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

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

但是几天之后,perl进程将逐渐消失.

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

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

那么,消除perl进程的可能性有多大?

我该怎么调试呢?

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

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

有谁有想法?

Fab*_*cio 5

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

尝试这样的事情:

sub send_mail{

   $db->connect();

   # Some DB operations #
   # Send mail #

   $db->disconnect();

}

while (1) {
   send_mail();
   sleep(5);
}
Run Code Online (Sandbox Code Playgroud)