启动控制台后,请在关闭控制台后保持程序运行。


8

可能重复:
如何完全从终端分离流程?

我有一个程序在远程Unix计算机上的Unix控制台中运行。我(愚蠢地)没有使用来运行它nohup &,现在我需要关闭本地控制台。

关闭本地控制台后,有什么方法可以使其保持远程运行?

Answers:


12

如果您的外壳是bash,则可以使用它们disown。Ctrl-Z暂停该过程,然后disown -h使其不接收SIGHUP。


出色的解决方案。它起作用了:-)
Thrawn

3
只是好奇:随着流程的暂停,难道不应该在此之后bg或类似的事情吗?还是也disown -h恢复它?
Arjan 2010年

如果进程在内部运行,这可以工作screen吗?我想继续以常规方式运行该过程xterm
声音

IIRC曾经否认过,它不会连接到任何终端设备
Douglas Leeder

5

在Solaris 9上,您可以使用nohup -p <pid>nohup运行中的进程。 这是有关实现的有趣解释。我不知道这是否已在其他Unices上实现。


nohup:无效选项-p在gentoo,ubuntu或fedora(我尝试过的unix)上不起作用,但是尽管如此,还是谢谢您:-) Solaris知道了。
Thrawn

2

Ctrl-Z暂停进程,然后bg使程序进入后台并继续运行直到完成。


问题是,如果我关闭控制台,则后台进程也会停止。我需要像nohup一样从控制台中分离进程的内容,但是在进程开始后:-)
Thrawn

而且我认为'nohup bg&'也不会起作用:-(
Thrawn

1
我在我的一个系统上尝试过它,并且在我注销(仅用du / >> temp作测试程序)时,它仍然可以正常运行,但是我知道如果您不想丢失程序或其结果,会很犹豫。
Matrix Mole

2

如果您有能力停止该程序并在注销之前重新启动它,然后停止它并通过screen重新启动它,这对于使用远程连接到Unix主机的任何人都是必须的。


1
我认为这里的主要问题恰恰是他不想停止该程序。
Gnoupi 2010年

1
是的,我希望程序不会停止:-)
Thrawn

我强烈建议屏幕用于将来这种情况的使用(我几乎总是在任何具有sehll o的系统上运行一次屏幕会话)。
Matrix Mole

1
几年后,我意识到自己不使用屏幕是一个傻瓜:-)
Thrawn
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.