gpt4 book ai didi

linux - 为什么我在一个终端上得到 "Suspended (tty output)"而在其他终端上却没有?

转载 作者:IT王子 更新时间:2023-10-28 23:54:43 42 4
gpt4 key购买 nike

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

在“损坏的”终端中,我必须将挂起的应用程序放回前台(使用 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

来自手册页:

tostop (-tostop)

Send (do not send) SIGTTOU for background output. This causes background jobs to stop if they attempt terminal output.

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

关于linux - 为什么我在一个终端上得到 "Suspended (tty output)"而在其他终端上却没有?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24056102/

42 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com