一尘不染

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

linux

显然,我在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上。


阅读 2444

收藏
2020-06-03

共1个答案

一尘不染

这将解决它:

stty -tostop

从手册页:

停止(-停止)

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

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

2020-06-03