为什么我的所有 gnome 终端在 Ubuntu 中都在 1 个进程下运行?这是整合本应保持分离的事物!我更喜欢xterm
每个窗口运行一个进程的理性模式。
我尝试将一些自动启动的窗口切换为 ,xterm
这样gnome-terminal
我就可以在查看日志文件时冻结日志文件的滚动。不幸的是,我无法再杀死桌面上乱七八糟的日志窗口。只是不小心杀死了我打开的每个终端!
- 我可以
gnome-terminal
像杀死单个 shell 进程一样杀死单个窗口吗? (你知道,就像一个正常的过程)
或者 tail -f
我可以通过手动向上滚动来停止内部自动滚动xterm
,以便我可以在日志文件增长时读取它吗?
答案1
要删除单个窗口,请使用其关闭按钮。或者找出其中运行的程序的进程ID,并将其杀死。
所有 UNIX 终端都有一个功能,很早以前终端是通过串行端口连接到计算机的硬件。终端可以发送流量控制向计算机发出的命令:“XON”(意思是“停止给我发送东西,我还没准备好”)和“X关闭”(意思是“好吧,把你拥有的东西扔给我”)。我通常建议在终端配置中关闭这些功能(命令是stty -ixon
),但在这种特殊情况下,它们很有用:按Ctrl+S停止滚动,按Ctrl+Q恢复。
tail -f
不是读取日志文件的最佳方式。试用多尾,其中tail -f
包含着色、滤镜、多个窗口和其他内容。即使您只想尾随一个文件,也可以运行 run less +F
,这会打开 less 的尾部模式。按Ctrl+C
可切换到浏览并F
切换回尾随。
答案2
终端是否应该是一个进程还是多个进程是另一天的争论,我认为杀死它们作为查看回滚数据的一种方式是对技术的误用。
我建议你考虑使用 GNUscreen
或tmux
.可能会更晚,因为它正在积极开发并且更容易使用。
如果您在所有终端上运行 tmux,您将能够执行疯狂的忍者技巧,例如在任何给定终端中向后滚动所有输出、多个窗格和选项卡、与一个终端断开连接并在另一个完整终端输出日志记录中继续您上次中断的位置、复制/粘贴魔法、进程监控,甚至能够杀死任何给定的 shell 选项卡。
答案3
考虑使用Ctrl-Z
来暂停尾部进程,然后使用 来恢复它fg
。在某些情况下,可以使用流控制字符(Ctrl-S
停止、Ctrl-Q
恢复),但在大多数现代终端上默认情况下禁用它们。