it-swarm.cn

是否可以从终端分离进程? (或者,“我应该使用屏幕的!”)

可能重复:
我可以否/屏蔽已经开始的进程吗?

在Unix(特别是Linux)上,我已经在ssh-> bash常规会话中开始了工作。我想尽快离开工作,但现在我意识到工作将需要几个小时。

如果我刚开始在银幕上从事这项工作,那么我可以分开工作并回家。但是我没有。

有什么办法可以将作业与其ssh会话断开连接,以便我可以关闭我的计算机(删除TCP连接并终止ssh会话)),但程序仍在运行吗?

我不在乎它的输出-实际上,我将stdout重定向到了一个文件。我只希望它运行完成。

146
mike

您可以按ctrl-z中断进程,然后运行bg使其在后台运行。

您可以使用jobs显示编号的列表,以这种方式后台显示所有进程。

然后,您可以运行disown %1(替换1jobs输出的进程号)以将进程与终端分离。

尽管名称如此,但运行disown后该进程仍归您所有,它将与您在其中启动该终端的终端分离。

此答案有更多信息

201
David Pashley

我相信您要查找的命令是“已删除”

21
Seigel
使用
 Nohup命令&
 
很漂亮:
 root @ index:〜#Nohup/usr/bin/curl localhost/begemot.php &
 [1] 894 
 root @ index:〜#Nohup:忽略输入并将输出附加到`Nohup.out'
 
,然后退出此终端,任务继续进行... 
13
Aleksander Demidov

在您的bash Shell中:

control+z

然后,要继续在后台运行作业:

bg

稍后,您可以键入jobs来查看您的进程是否仍在运行。

9
Joe

在屏幕内部使用 reptyr 时,可以将进程(或其输出)移到屏幕中。

8
mab

为了避免出现此问题,我已设置screen在连接到经常使用的主机时自动运行。

http://tlug.dnho.net/?q=node/239 是一种实现方式,尽管还有其他变化。

当我在会话中意外断开连接时,已经为我节省了一两次,否则我会忘记在开始大手笔的事情之前就开始screen

7
David Spillett

运行命令时先使用crtl-Z然后bg或使用&在100%时不可靠。它在大多数情况下都可以工作,但在某些情况下(I/O使用情况,...)可能无法正常工作。
屏幕是可靠的解决方案。

6
radius

如果您使用的是bash,则可以怀疑带有control-Z,而背景带有bg。

作业控制(来自man bash)

 If the operating system on which bash is running supports job 
 control, bash contains facilities to use it.   Typing the  
 suspend  character  (typically ^Z, Control-Z) while a process 
 is running causes that process to be stopped and returns control 
 to bash.  Typing the delayed suspend character (typically ^Y, 
 Control-Y) causes the process  to  be stopped  when  it  
 attempts to read input from the terminal, and control to be 
 returned to bash.

帮助bg

bg: bg [job_spec ...]
    Place each JOB_SPEC in the background, as if it had been started with
    `&'.  If JOB_SPEC is not present, the Shell's notion of the current
    job is used.

帮助工作

jobs: jobs [-lnprs] [jobspec ...] or jobs -x command [args]
    Lists the active jobs.  The -l option lists process id's in addition
    to the normal information; the -p option lists process id's only.
5
Zoredache

如果事先知道要在后台运行,则unix命令 at 是一个不错的选择。它会在计划的时间在后台启动命令,就像不重复的cron作业一样。根据您的发行版,您可能需要安装它并启动atd守护程序。

4
Sylvain