![如何告诉正在运行的进程忽略 SIGHUP?](https://linux22.com/image/19983/%E5%A6%82%E4%BD%95%E5%91%8A%E8%AF%89%E6%AD%A3%E5%9C%A8%E8%BF%90%E8%A1%8C%E7%9A%84%E8%BF%9B%E7%A8%8B%E5%BF%BD%E7%95%A5%20SIGHUP%EF%BC%9F%20.png)
可能的重复:
如何关闭终端而不终止其中运行的命令?
我有一个运行 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.