Joh*_*n O 4 linux kill perl gnu-screen
我在屏幕上运行 perl 脚本(我可以登录并检查调试输出)。脚本逻辑中的任何内容都不能杀死它。
我是仅有的两个可以访问服务器的人之一,另一个人发誓不是他(我们都有很多钱可以继续顺利运行)。我没有理由相信某些黑客已经设法获得了一个 shell 或类似的东西。我几乎没有理由怀疑主机操作的管理员(带宽/cpu 方面,这个脚本非常轻量级)。
Screen 继续运行,但在 perl 脚本的输出结束时,我看到“Killed”并且它已回落到提示。我如何去测试什么是该死的东西?
我检查了 crontab,里面没有任何东西可以杀死随机/非随机进程。任何日志文件中都没有任何提示。它将运行 2 到 8 小时,看起来(在我家里的 Mac 上,它可以运行 24 小时以上没有问题)。服务器正在运行 Ubuntu 版本,如果重要的话,我可以查一下。
为所有信号(TERM、SEGV、INT、HUP 等)放入信号处理程序,并在它们被击中时让它们注销。它不会告诉您什么正在发送信号,但它会让您看到它是什么信号,并且可能会忽略它。
$SIG{'TERM'} = $SIG{'INT'} = sub { print(STDERR "Caught SIG$_[0]. Ignoring\n"); };
Run Code Online (Sandbox Code Playgroud)
当它捕获到 sigterm 或 sigint 时会打印出来,然后将控制权返回给程序。当然,在忽略所有这些信号的情况下,杀死它的唯一方法是让程序本身退出,或者向它发送一个无法被捕获的 SIGKILL。