为什么使用 ps 命令时会出现三个(应该是两个)与屏幕相关的进程?

为什么使用 ps 命令时会出现三个(应该是两个)与屏幕相关的进程?

您可以看到有三个与屏幕命令相关的进程:

[world]$ ps auxf
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
hugemeow   28938  0.0  0.0  66080  1692 ?        S    23:03   0:00 sshd: hugemeow@pts/0
hugemeow   28941  0.0  0.0 102040  2172 pts/0    Ss   23:03   0:00  \_ -bash
**hugemeow   30231  0.0  0.0  19436  1172 pts/0    S+   23:08   0:00**      \_ tmux -L l a -d
hugemeow   15696  0.0  0.1 124804 18480 ?        S    22:18   0:01 php5.cgi
hugemeow   20388  0.0  0.0  19600  1376 ?        Ss   04:47   0:05 tmux -L l
hugemeow   20389  0.0  0.0 102064  2040 pts/2    Ss   04:47   0:00  \_ -bash
**hugemeow   20440  0.0  0.0 107424  1004 pts/2    S+   04:48   0:00**  |   \_ screen -dr l     //  1
hugemeow   20524  0.0  0.0 102060  2048 pts/3    Ss   04:48   0:00  \_ -bash
hugemeow   20534  0.0  0.0  18856  1148 pts/3    S+   04:48   0:01      \_ top
hugemeow    8257  0.0  0.0 107948   996 ?        Ss   Aug13   0:12 SCREEN -S cmd            //  2
hugemeow    8258  0.0  0.0 102084  1528 pts/11   Ss+  Aug13   0:00  \_ /bin/bash
hugemeow   25035  0.0  0.0 102076  2052 pts/1    Ss+  Aug14   0:00  \_ /bin/bash
**hugemeow   24542  0.0  0.0 108072  1040 ?        Ds   Aug13   0:21 SCREEN** -S l              //  3
hugemeow   24545  0.0  0.0 102124  1564 pts/8    Ss   Aug13   0:00  \_ /bin/bash
hugemeow   25589  0.0  0.0  18840  1160 pts/8    S+   Aug14   0:02  |   \_ top
hugemeow   25894  0.0  0.0 102124  1616 pts/9    Ss   Aug13   0:00  \_ /bin/bash
hugemeow   30249  0.0  0.0  98740  1008 pts/9    R+   23:08   0:00      \_ ps auxf

但是当使用screen -ls命令时,你会发现只有两个screen进程:(那么为什么ps auxf显示3个进程呢?

顺便问一下,为什么屏幕命令与套接字有关?

screen -ls
There are screens on:
        8257.cmd        (08/13/2012 08:48:53 PM)        (Detached)
        24542.l (08/13/2012 07:52:30 PM)        (Attached)
2 Sockets in /var/run/screen/S-hugemeow


ls /dev/pts -l
total 0
crw--w---- 1 hugemeow   tty 136,  0 2012-08-15 23:15 0
crw--w---- 1 hugemeow   tty 136,  1 2012-08-14 11:08 1
crw--w---- 1 hugemeow   tty 136, 11 2012-08-14 11:06 11
crw------- 1 hugemeow   tty 136,  2 2012-08-15 23:15 2
crw--w---- 1 hugemeow   tty 136,  3 2012-08-15 23:15 3
crw--w---- 1 hugemeow   tty 136,  8 2012-08-15 23:15 8
crw--w---- 1 hugemeow   tty 136,  9 2012-08-15 23:15 9

答案1

您必须将屏幕视为客户端和服务器。当您启动新的屏幕会话时,您将拥有一个充当客户端的进程,您可以与之交互,而第二个进程则是您创建/启动的任何窗口/程序的父进程。当您断开连接时,您的客户端进程将关闭。

在具有三个进程的系统上,您有两个屏幕会话正在运行,并且一个屏幕客户端连接到其中一个会话。

Screen 会话是全大写的 SCREEN 进程。客户端进程是小写的版本。

相关内容