如何告诉正在运行的进程忽略 SIGHUP?

如何告诉正在运行的进程忽略 SIGHUP?

可能的重复:
如何关闭终端而不终止其中运行的命令?

我有一个运行 Debian Squeeze 的低端“服务器”,我偶尔会通过 ssh 访问它。系统往往很慢,例如运行apt-cache search可能需要半分钟。有时我发现我迫不及待地等待某个过程完成(我正在使用笔记本电脑,需要去某个地方)。

nohup如果我最初是用或 inside开始该过程的screen,那么这不会有问题。但是,即使我注销了,如何才能让已经运行的进程继续运行呢?

答案1

假设您使用的是 bash、ksh、zsh 或其他类似的 shell,您可以将进程置于后台,然后运行disown​​。具体来说,bash您可能想要disown -h.

从 bash 的帮助页面disown

disown: disown [-h] [-ar] [jobspec ...]
    Remove jobs from current shell.

    Removes each JOBSPEC argument from the table of active jobs.  Without
    any JOBSPECs, the shell uses its notion of the current job.

    Options:
      -a        remove all jobs if JOBSPEC is not supplied
      -h        mark each JOBSPEC so that SIGHUP is not sent to the job if the
        shell receives a SIGHUP
      -r        remove only running jobs

    Exit Status:
    Returns success unless an invalid option or JOBSPEC is given.

答案2

disown如果您使用 bash 或 zsh,请在注销之前使用内置命令。

man zshall

   disown [ job ... ]
   job ... &|
   job ... &!
          Remove the specified jobs from the job table; the shell will  no
          longer  report their status, and will not complain if you try to
          exit an interactive shell with them running or stopped.   If  no
          job is specified, disown the current job.

相关内容