nohup.out 不再被附加

nohup.out 不再被附加

我有一个在 AWS 上运行的 Ubuntu Linux ec2 实例。我使用了以下命令

nohup php script.php

这样当我使用 SSH 断开与实例的连接时,它仍会运行。该脚本包含一个巨大的循环,大约需要 4 天才能完成。

for($i=0;$i<1000000;$i++) {
    // It does other stuff that's kind of irrelevant

    echo $i.'\n';
}

我每隔几个小时就用检查nohup.out文件,vim editor看看它是否仍在附加。它似乎已停止附加。但是,ps -ef在终端中输入时,显示脚本仍在运行。

有任何想法吗?

答案1

首先想到的是包含此文件的文件系统可能已满。程序每次尝试写入文件时都会出错,但它可能会忽略这些错误。

如果 EC2 实例具有该程序的副本strace,则可以使用它来了解该程序正在做什么:

strace -p pid-of-process

将列出进程正在执行的所有系统调用。如果程序主要执行文件 I/O,则:

strace -e trace=file -p pid-of-process

将仅列出正在执行的文件系统操作。这可能更容易解释。无论哪种方式,这都会让您了解程序正在做什么。

相关内容