如何在nohup下放置已經運行的進程?

我有一個已經運行了很長時間而且不想結束它的進程。 php

我怎麼把它放在nohup下(也就是說,即便關閉終端,如何讓它繼續運行?) java


#1樓

假設因爲某種緣由, Ctrl + Z也沒法正常工做,轉到另外一個終端,找到進程ID(使用ps )並運行: python

kill -SIGSTOP PID 
kill -SIGCONT PID

SIGSTOP將暫停該過程, SIGCONT將在後臺恢復該過程。 因此如今,關閉兩個終端並不會中止你的過程。 shell


#2樓

不幸的是, disown特定於bash,並不適用於全部shell。 bash

某些類型的Unix(例如AIX和Solaris)在nohup命令自己上有一個選項,能夠應用於正在運行的進程: spa

nohup -p pid

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


#3樓

這些都是上面的好答案,我只是想補充說明: 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/


#4樓

將運行過程發送到nohup( http://en.wikipedia.org/wiki/Nohup

nohup -p pid ,它對我不起做用

而後我嘗試瞭如下命令,它工做得很是好

  1. 運行一些SOMECOMMAND,好比/usr/bin/python /vol/scripts/python_scripts/retention_all_properties.py 1

  2. 按Ctrl + Z中止(暫停)程序並返回shell。

  3. bg在後臺運行它。

  4. disown -h以便在終端關閉時不會終止進程。

  5. 鍵入exitexit shell,由於如今你很好,由於操做將在後臺運行它本身的進程,所以它不依賴於shell。

這個過程至關於運行nohup SOMECOMMAND


#5樓

在個人AIX系統上,我試過了

nohup -p  processid>

這很好用。 即便在關閉終端窗口後,它仍繼續運行個人過程。 咱們將ksh做爲默認shell,所以bgdisown命令不起做用。

相關文章
相關標籤/搜索