我有一个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中也存在同样的问题
有谁有想法?
我不是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)
| 归档时间: |
|
| 查看次数: |
78 次 |
| 最近记录: |