发出“挂起”命令后如何恢复终端功能?


8

我输入suspend了终端,它暂停了执行。

如何恢复正常的终端功能?我已经尝试过Ctrl+ CCtrl+ DCtrl+ Q如此处建议)和Ctrl+ Z,但是这些都不起作用。当然我可以关闭终端并打开一个新终端,但是没有办法“恢复”终端功能吗?

我正在使用默认(bash)shell运行Ubuntu GNOME 16.04。


抱歉,我在这里问,但是此命令的目的是什么?
pa4080

1
要停止执行脚本并让脚本稍后继续;)
Rinzwind

Answers:


10

从您的链接:

直到收到SIGCONT信号。

所以那是 kill -SIGCONT {pid}

  • killall -CONT bash 将恢复所有。
  • kill -18 {pid} 会是一样的。
  • 也是 kill -s CONT {pid}

根据此列表,它应该是control-z,但是您需要使用control-z来停止该过程:

18 - SIGCONT - Resume process, ctrl-Z (2nd)
19 - SIGSTOP - Pause the process / free command line, ctrl-Z (1st)

您需要在终端中运行的Shell会话的{pid}


还有作业控制命令

fg, bg

The fg command switches a job running in the background into the foreground. 
The bg command restarts a suspended job, and runs it in the background. 
If no job number is specified, then the fg or bg command acts 
upon the currently running job.

它也应该是Ctrl + Q,但是由于某些原因无法正常工作。我认为是因为由于外壳已挂起,因此无法从挂起的会话中接收Ctrl + Q(SIGCONT)。如您所说,它确实可以工作,kill -SIGCONT PID但是当我打开许多终端时,我找不到获取暂停会话的PID的简单方法。
terdon

这不起作用。我用ps aux | grep术语获取终端的pid,尝试了SIGCONT的所有3个变体,但没有一个起作用。当我确实杀死pid时,终端确实关闭了,所以我确实拥有正确的pid。
Cerberus's

@Cerberus您希望外壳程序会话的PID在终端中运行,而不是终端本身。如果只有一个开放式终端,则可以轻松找到pgrep bash。如果不是,请使用pstree -p,在那里找到终端的PID,然后查看其子代的PID,bash会话就是其中之一。
terdon

至少在这种情况下,我将需要有两个终端会话,一个被挂起,另一个从中发送SIGCONT。
Cerberus's

1
SIGCONT通常被忽略,那么为什么不开火killall -CONT bash呢?:-)
JonasSchäfer17年
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.