当前位置: 首页 > 面试题库 >

为什么在一个终端上却显示“ Suspended(tty output)”(挂起(tty输出))?

文德曜
2023-03-14
问题内容

显然,我在tcsh
shell中做了一些奇怪/错误的事情,现在每当我在后台启动一个应用程序并打印输出到标准输出时,该应用程序就会被挂起(停止)。奇怪的是,此行为仅在此终端中发生;如果我在另一个终端上执行相同的操作,则该应用程序将继续在后台运行,并将其输出打印到终端。

在“中断”终端中,我必须将挂起的应用程序放回前台(使用fg),以使其继续运行。

例:

thehost:/tmp/test1(277)> ls -l &
[3] 1454
thehost:/tmp/test1(278)> 
[3]  + Suspended (tty output)        ls --color=auto -l
thehost:/tmp/test1(278)> fg
ls --color=auto -l
total 0
thehost:/tmp/test1(279)>

在另一个终端中执行相同的命令可以正常工作:

thehost:/tmp/test1(8)> ls -l &                                                 
[1] 2280                                                                        
thehost:/tmp/test1(9)> total 0

[1]    Done                          ls --color=auto -l                         
thehost:/tmp/test1(9)>

在受影响的终端上启动bash不能解决此问题:

thehost:/tmp/test1(280)> bash
oliver@thehost:/tmp/test1$ ls -l &
[1] 2263
oliver@thehost:/tmp/test1$

[1]+  Stopped                 ls --color=auto -l
oliver@thehost:/tmp/test1$ fg
ls --color=auto -l
total 0
oliver@thehost:/tmp/test1$

获取新的登录shell(带有su - oliver)也不能解决此问题。

因此:我在该终端中做了什么才能得到这种行为, 我该怎么做才能恢复正常行为
?这并不是一个重要的问题(我可以关闭终端并打开一个新终端),但我很好奇:-)

发生在Linux RHEL 6.4 64位,KDE 4.11.5,Konsole 2.11.3和tcsh 6.17.00上。


问题答案:

这将解决它:

stty -tostop

从手册页:

停止(-停止)

发送(不发送)SIGTTOU用于后台输出。如果后台作业尝试进行终端输出,则会导致它们停止。

tostop通常是默认设置,因为通常不希望混合多个作业的输出。因此,大多数人只希望前台作业能够打印到终端。



 类似资料:
  • 稳定性: 2 - 稳定的 tty 模块提供了 tty.ReadStream 类和 tty.WriteStream 类。 大多数情况下无需直接使用此模块。 它可以通过以下方式使用: const tty = require('tty'); 当 Node.js 检测到它正被运行在一个文本终端(TTY)的上下文中时,则 process.stdin 默认会被初始化为一个 tty.ReadStream 实例

  • 问题内容: 我正在尝试与大学的MySQL数据库建立连接,但该连接已挂起。 此调用:打印(在我最终杀死它之后): 我刚刚从下载的MySQL连接器/ J 这里。我不确定这是否是问题的一部分。我非常准确地遵循了指示。 我也可以像这样在命令行上连接到mysql: 可能的问题: 我写的Java代码 我如何安装MySQL Connector / J 某种网络问题阻止了连接 问题: 我应该怎么解决这个问题?为什

  • 问题内容: 我有一个用于仿真的python脚本,一个循环要花很长时间,每个循环要花不同的时间,因此我在每个循环后打印一个,以监视它运行的速度和经过的时间。脚本运行时的声明。 但是,当我在终端中的iPython中运行脚本时,点并不会一一打印,而是在循环结束时一次打印所有点,这使整个过程变得毫无意义。如何在运行时内联打印点? 问题答案: 如何在运行时内联打印点? 尝试刷新输出,如下所示: 或对于Pyt

  • 问题内容: 我可以成功运行容器: 但是执行挂起: 直到我按任意键,例如: 为什么挂? 更新 : 阅读评论后,我想我会得到答案: 先决条件: “ docker attach”重用相同的tty,而不打开新的tty。 (1)执行无守护程序模式: 一切正常,然后运行命令: (2)在守护程序模式下运行: 实际上, 以下内容应该已经从正在运行的容器输出到stdout: 因此执行似乎挂起,但实际上它正在等待您的

  • 为什么toGray函数不在设备上显示输出,下面是我将图像转换为灰度的代码,我将代码更改为函数,但它不显示输出:

  • 这是我的测试代码,但我有一个更详细的代码——但它们都不起作用。在python 3. x中。 编辑:这就是我想使用的终端(和语法错误-同样的问题):