在xshell中使用screen命令运行后台进程

在xshell中使用screen命令运行后台进程

screen命令是我们运行进程后台的一个不错的程序,但我发现Ctrl + a w在 xshell(Xmanager 组件)中不显示屏幕窗口列表,并且Ctrl + a k不为我杀死这个屏幕终端。但是Ctrl + a d分离会话是有效的!那么Ctrl +a w列出会话有什么问题呢?

更严重的是,我怎么知道我是在屏幕窗口还是普通的 bash 窗口?很多次我尝试分离屏幕会话,之后我就注销了ctrl+a d。非常尴尬不是吗?那么有没有任何提示可以显示我是在屏幕窗口中还是只是普通的 tty 终端?

答案1

如果您在输入 ^A d 时注销,我猜您在按 d 时仍在按住控制键。 ^A ^D 和 ^A d 一样都必须“分离”。对于 ^A k 和 ^A w,请尝试在按 k 或 w 之前放开控制键。

答案2

可能该组合^A w被具有更高优先级的事物使用。^A d可能没有被它使用,因此传递给screen.您可以尝试使用 设置不同的命令字符-e

^A d不应将您从普通 shell 中注销。

我的建议是,当不确定时,请务必^A w先按^A d。为了使其完全安全,您可以使用 shell 的键绑定功能对其做出反应,例如 print this is not within screen

答案3

我也发现自己被这个欺骗了。从那时起,我总是将这两行添加到screenrc

hardstatus alwayslastline
hardstatus string "%{= kG}[ %{G}%H %{g}][ %{=kw}%?%-Lw%?%{r}(%{W}%n*%f%t%?(%u)%?%{r})%{w}%?%+Lw%?%?%= %{g}][%{B}%Y-%m-%d %{W}%c %{g}]"

它改变了 TTY 在屏幕中的视觉外观。事后你不能忽视它。

相关内容