运行nohup命令后,如何查看输出控制台?

40

我有一个在Linux服务器上运行的代码。由于它需要运行数小时,我必须使用nohup确保即使我失去与服务器的连接,我的代码仍然在运行。同样,由于我必须等待数小时才能看到结果,我定义了一个计数器来打印代码的进度(%)。如果我失去与服务器的连接或关闭终端,唯一可以看到代码仍在运行的方法是使用top。是否有任何办法可以再次查看输出控制台(显示进度的消息)?


4
为什么不使用GNU screen,这样你就可以断开连接并稍后重新连接呢? - Barmar
我还没有尝试过!让我试一下,然后我会及时告诉你。谢谢。 - MTT
如果您有更多关于此的问题,应该在superuser.com上提问。这不是一个编程问题。 - Barmar
2个回答

108

你可以在另一个终端运行以下命令以实时查看输出。

tail -f nohup.out

that is want! thks - Guihgo
谢谢。这个命令只是实时打印,非常好。 - Fatih Ayyildiz
4
请确保在与nohup命令相同的目录中执行此命令,因为该命令会读取在该目录中生成的nohup.out输出文件。非常好,谢谢! - Dami
如果您删除此文件会发生什么?对于任何新的日志,它是否会创建一个新的 nohup.out 文件? - kaushalpranav
如果你删除了它,在再次运行 nohup 时会创建一个新的文件。否则,nohup 将继续将日志追加到现有文件中。至少在我测试的情况下是这样的。 - yfpb

34
您可以将标准输出和标准错误重定向到一个文件中,然后查看该文件。例如:
nohup command 2>&1 > outputfile &

注意man页中的默认行为:

如果标准输出是终端,则将输出附加到“nohup.out”(如果可能);否则附加到“$HOME/nohup.out”。如果标准错误是终端,则将其重定向到标准输出。

因此,您实际上只需运行

nohup command &

然后查看nohup.out文件


1
如果标准输出是终端——什么是终端? - Wassadamo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接