我有一個已經運行了很長時間而且不想結束它的進程。 php
我怎麼把它放在nohup下(也就是說,即便關閉終端,如何讓它繼續運行?) java
假設因爲某種緣由, Ctrl + Z也沒法正常工做,轉到另外一個終端,找到進程ID(使用ps
)並運行: python
kill -SIGSTOP PID kill -SIGCONT PID
SIGSTOP
將暫停該過程, SIGCONT
將在後臺恢復該過程。 因此如今,關閉兩個終端並不會中止你的過程。 shell
不幸的是, disown
特定於bash,並不適用於全部shell。 bash
某些類型的Unix(例如AIX和Solaris)在nohup
命令自己上有一個選項,能夠應用於正在運行的進程: spa
nohup -p pid
見http://en.wikipedia.org/wiki/Nohup unix
這些都是上面的好答案,我只是想補充說明: code
你不能disown
一個pid或進程,你disown
一份工做,這是一個重要的區別。 進程
做業是附加到shell的進程的概念,所以您必須將做業放入後臺(而不是暫停它),而後將其取消。 ip
問題:
% jobs [1] running java [2] suspended vi % disown %1
有關Unix做業控制的更詳細討論,請參見http://www.quantprinciple.com/invest/index.php/docs/tipsandtricks/unix/jobcontrol/ 。
將運行過程發送到nohup( http://en.wikipedia.org/wiki/Nohup )
nohup -p pid
,它對我不起做用
而後我嘗試瞭如下命令,它工做得很是好
運行一些SOMECOMMAND,好比/usr/bin/python /vol/scripts/python_scripts/retention_all_properties.py 1
。
按Ctrl + Z中止(暫停)程序並返回shell。
bg
在後臺運行它。
disown -h
以便在終端關閉時不會終止進程。
鍵入exit
以exit
shell,由於如今你很好,由於操做將在後臺運行它本身的進程,所以它不依賴於shell。
這個過程至關於運行nohup SOMECOMMAND
。
在個人AIX系統上,我試過了
nohup -p processid>
這很好用。 即便在關閉終端窗口後,它仍繼續運行個人過程。 咱們將ksh做爲默認shell,所以bg
和disown
命令不起做用。