如何在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命令不起做用。

相关文章
相关标签/搜索