【问题标题】:What if we close the terminal before finishing the command?如果我们在完成命令之前关闭终端怎么办?
【发布时间】:2013-01-16 01:49:25
【问题描述】:

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

【问题讨论】:

    标签: linux terminal command


    【解决方案1】:

    通常,您必须期望关闭终端会挂断您的命令。 但不要害怕! 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 命令代表“no hangup”,即使您关闭终端,它也会确保您执行的命令继续运行。

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

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

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

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

        了解 nohups 和守护进程 (-d)...

        一个好的链接是[link]What's the difference between nohup and a daemon?

        【讨论】:

          【解决方案4】:

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2017-04-10
            • 2017-10-11
            • 1970-01-01
            • 2012-06-07
            • 1970-01-01
            • 2016-12-19
            • 2011-10-22
            • 2020-11-17
            相关资源
            最近更新 更多