如果您从某个过程中删除^ Z,它将“停止”。如何切换回去?


81

我不小心“停止”了我的telnet过程。现在我既不能“切换回”它,也不能杀死它(它不会响应kill 92929,其中92929是processid。)

所以,我的问题是,如果您在linux命令行上有一个已停止的进程,那么如何在不采取措施的情况下切换回该进程或杀死它kill -9呢?

Answers:


90

最简单的方法是fg将其带到前台:

$ help fg
fg: fg [job_spec]
    Move job to the foreground.

    Place the job identified by JOB_SPEC in the foreground, making it the
    current job.  If JOB_SPEC is not present, the shell's notion of the
    current job is used.

    Exit Status:
    Status of command placed in foreground, or failure if an error occurs.

另外,您可以运行bg使其在后台继续:

$ help bg
bg: bg [job_spec ...]
    Move jobs to the background.

    Place the jobs identified by each JOB_SPEC in the background, as if they
    had been started with `&'.  If JOB_SPEC is not present, the shell's notion
    of the current job is used.

    Exit Status:
    Returns success unless job control is not enabled or an error occurs.

如果您刚刚打过Ctrl Z,那么要带回作业只需fg不带任何参数即可运行。


谢谢!!我想这就是Alt + Tab的等式。你知道,只要我做了什么事fg telnet,但。它说Terminated,大概是我之前的killcmd的b / c 。
bobobobo 2014年

@bobobobo大概是。无论如何,fg不需要任何参数。如果您刚刚点击^Z,请fg在同一终端上运行,它将带回第一份工作。
terdon

48

您可以jobs用来列出挂起的进程。举个例子。从一个过程开始:

$ sleep 3000  

然后,您暂停该过程:

^Z
[1]+  Stopped                 sleep 3000

您可以列出该过程:

$ jobs
[1]+  Stopped                 sleep 3000

并将其带回前台:

$ fg %1
sleep 3000

%1对应于[1]列出的jobs命令。


18

通过使用kill命令从命令行向进程发送CONTINUE信号,您应该能够重新启动已暂停的进程:

kill -CONT 92929

这将导致它恢复操作,但不会被带到前台。
bahamat 2014年

@bahamat是的,是的。仍然需要fg进入原始终端。我喜欢使用-STOP和-CONT gui程序来节省资源,但是无论如何它们都在后台有效运行。
Geeb 2014年

在的情况下,sleep它会kill的过程,是不是你想要的..什么;)
蒂莫
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.