为什么嵌套的screen session中只有一个SCREEN进程?

Why is there only one SCREEN process in nested screen session?

我创建了 4 嵌套屏幕会话,但只有一个 SCREEN 进程:

[root@localhost ~]# ps -ef | grep SCREEN
root      4852  4851  0 02:57 ?        00:00:00 SCREEN
root      4915  4900  0 02:58 pts/4    00:00:00 grep --color=auto SCREEN

为什么嵌套屏幕会话中只有一个 SCREEN 进程?我认为应该有 4 SCREEN 个进程:

屏幕 window 中调用 screen 不会创建新的 屏幕会话 。相反,只会创建新的 screen windows(就像 ctrl-a c)和新的 screen windows 在同一个 屏幕会话 中 运行。您可以通过按 ctrl-a w 来验证这一点。但是您可以强制它创建新的 屏幕会话 ,例如 screen -S session-name.

A screen window 只是一个虚拟终端,您可以在其中拥有 shell 运行。 screen session可以认为是所有这些screenwindows运行在同一个screen进程中的集合。会话可以通过 screen -ls.

找到

screen程序创建了两个进程来管理伪终端和用户显示。伪终端的一端连接到实际终端,另一端连接到screen以内运行的外壳。 任何 使用伪终端(例如终端模拟器)的程序都可以做到这一点。

  • screen(父进程)
  • SCREEN(子进程,然后是后续 shell 的父进程,也称为 "windows")。

您可以通过执行 "ps -ef" 并查看 PIDPPID 列来了解这种关系。 PPID 列中给定 -/bin/bash(或其他)显示的数字将是 PID 列中 SCREEN 显示的数字。