每当进程在 上大量打印时stdout
,如果我尝试kill
通过发送信号 进行处理"ctrl + c"
,进程不会立即停止。但如果我在文件中重定向输出,则按下 时进程会立即停止"ctrl +c"
。事实上,如果我使用 gnu screen
,并且我的进程在 上大量输出,那么我也stdout
无法切换。为什么会有这样的行为?tab
答案1
该过程生成输出的速度比网络和屏幕的组合显示速度快得多。
当您按下ctrl-键时C,由于所有输出造成的网络拥塞,此键序列可能需要一些时间才能到达运行该进程的服务器;并且当该进程被终止时,由于在各个地方进行缓冲,可能需要相当长的时间才能将已经生成的所有输出发送到屏幕:首先是服务器上的网络缓冲区,然后是路由器等传输中的数据包缓冲区,显示系统上的输入网络队列,然后是 ssh / screen / X windows 的输入缓冲区(取决于您在哪里运行screen
)。
使用screen
切换选项卡时基本上有同样的问题:ctrl-AA序列可能会在到服务器的途中延迟,然后screen
可能会立即切换显示的终端,但这只有在管道中已有的所有内容显示在本地系统上后才可见。