2

让我解释得更好。如果我在 Linux 中运行一个命令并且在它完成之前你可以输入另一个命令我关闭终端会发生什么。它还会执行命令吗?

4

4 回答 4

2

通常,您必须期望关闭终端会挂断您的命令。但不要害怕!Linux 也有解决方案!

为确保您的命令完成,请先使用nohup参数。只需将它放在您尝试做的任何事情之前:

nohup ./some_program
nohup ./do_a_thing -frx -file input_file.txt
nohup grep "something" giant_list_of_files/* > temp_file.txt

nohup命令代表“不挂断”,即使您关闭终端,它也会确保您执行的命令继续运行。

于 2013-01-31T20:37:04.073 回答
1

这取决于流程和您的环境(作业控制外壳选项、VNC 等)。但通常情况下,不会。该进程将从操作系统获得“挂断”信号(消息),并在收到该信号后退出。

例如,该nohup命令安排进程忽略来自操作系统的挂断信号。有很多方法可以达到相同的结果。

于 2013-01-31T20:38:34.387 回答
1

我会说它会在会话关闭之前中止您的状态。

如果您想确保完成这项工作,您将需要使用 nohup 命令。

http://en.wikipedia.org/wiki/Nohup

阅读有关 nohups 和守护进程 (-d) 的信息...

一个好的链接是 [link] nohup 和守护进程有什么区别?

于 2013-01-31T20:39:06.290 回答
0

值得一看screen命令,Screen 命令提供了将长时间运行的进程(或程序或 shell 脚本)从会话中分离出来,然后再将其附加回来的能力。

于 2013-01-31T21:21:07.503 回答