我有一个已经运行了很长时间的进程,不想结束它。

我如何把它放在nohup下(也就是说,我如何使它继续运行,即使我关闭了终端?)


当前回答

将正在运行的进程发送到nohup (http://en.wikipedia.org/wiki/Nohup)

Nohup -p pid,它对我不起作用

然后我尝试了下面的命令,它工作得很好

运行some somcommand, 输入/usr/bin/python /vol/scripts/python_scripts/retention_all_properties.py。 按Ctrl+Z停止(暂停)程序并返回shell。 Bg在后台运行它。 否认-h,这样当终端关闭时进程不会被终止。 输入exit退出shell,因为现在你已经准备好了,因为操作将在后台自己的进程中运行,所以它没有绑定到shell。

这个过程相当于运行nohup somcommand。

其他回答

将正在运行的进程发送到nohup (http://en.wikipedia.org/wiki/Nohup)

Nohup -p pid,它对我不起作用

然后我尝试了下面的命令,它工作得很好

运行some somcommand, 输入/usr/bin/python /vol/scripts/python_scripts/retention_all_properties.py。 按Ctrl+Z停止(暂停)程序并返回shell。 Bg在后台运行它。 否认-h,这样当终端关闭时进程不会被终止。 输入exit退出shell,因为现在你已经准备好了,因为操作将在后台自己的进程中运行,所以它没有绑定到shell。

这个过程相当于运行nohup somcommand。

不幸的是,disown是bash特有的,并不是在所有shell中都可用。

某些类型的Unix(例如AIX和Solaris)在nohup命令本身上有一个选项,可以应用于正在运行的进程:

nohup -p pid

参见http://en.wikipedia.org/wiki/Nohup

使用bash的Job Control将进程发送到后台:

按Ctrl+Z停止(暂停)程序并返回shell。 Bg在后台运行它。 Disown -h [job-spec],其中[job-spec]是作业号(例如%1是第一个运行的作业;使用jobs命令查找您的号码),这样当终端关闭时作业就不会被终止。

CTRL + z -暂停作业(不会取消!) Bg -这将把作业放在后台,并在运行过程中返回 Disown -a -这将切断与job的所有附件(所以你可以关闭终端,它仍然会运行)

这些简单的步骤将允许您在保持进程运行的同时关闭终端。

它不会放nohup(基于我对你的问题的理解,你不需要它)。

简单简单的步骤

Ctrl + Z ---------->暂停进程 bg -------------->恢复并运行后台 只有当您需要从终端分离时才需要否认%1 ------------->