为什么我在一个终端上看到“暂停(tty 输出)”,但在其他终端上却没有看到?
- 2024-11-14 08:30:00
- admin 原创
- 21
问题描述:
显然我在 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 上。
解决方案 1:
这将修复它:
stty -tostop
从手册页中:
停止 (-tostop)
发送(不发送)SIGTTOU 进行后台输出。这会导致后台作业在尝试终端输出时停止。
这tostop
通常是默认设置,因为通常不希望混合多个作业的输出。所以大多数人只希望前台作业能够打印到终端。
解决方案 2:
您zsh
可以使用:
nohup ls -l 2>/dev/null &
所以nohup [command] 2>/dev/null &
希望有帮助
相关推荐
热门文章
项目管理软件有哪些?
- 2024年20款好用的项目管理软件推荐,项目管理提效的20个工具和技巧
- 2024年开源项目管理软件有哪些?推荐5款好用的项目管理工具
- 项目管理软件有哪些?推荐7款超好用的项目管理工具
- 项目管理软件哪个最好用?盘点推荐5款好用的项目管理工具
- 项目管理软件有哪些最好用?推荐6款好用的项目管理工具
- 项目管理软件有哪些,盘点推荐国内外超好用的7款项目管理工具
- 2024项目管理软件排行榜(10类常用的项目管理工具全推荐)
- 项目管理软件排行榜:2024年项目经理必备5款开源项目管理软件汇总
- 2024年常用的项目管理软件有哪些?推荐这10款国内外好用的项目管理工具
- 项目管理必备:盘点2024年13款好用的项目管理软件
热门标签
云禅道AD