Nohup

如何告訴正在執行的程序忽略 SIGHUP?

  • November 12, 2011

可能重複:

如何關閉終端而不殺死其中執行的命令?

我有一個執行 Debian Squeeze 的非常低端的“伺服器”,我偶爾會通過 ssh 連接到它。系統往往很慢,例如執行apt-cache search可能需要半分鐘。有時我發現我迫不及待地等待一個過程完成(我在我的筆記型電腦上,需要去某個地方)。

如果我最初使用nohup或 inside開始該過程screen,這將沒有問題。但是,儘管我註銷了,如何讓已經執行的程序繼續執行?

假設您使用的是 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.

引用自:https://unix.stackexchange.com/questions/24477