Answers:
通过向GNU /屏幕进程发送SIGCHLD(在关闭窗口时通常会收到),我已经取得了一些成功,这迫使它触摸(并可能重新创建)套接字文件。
还要注意,有两种调用screen
可执行文件的方式,只是大小写不同:SCREEN
是您尝试重新连接的服务器端组件,screen
还是客户端(在客户端和服务器端之间随机播放数据)。所以您可能想尝试取消小写版本...
例如,在下面的示例中,您可以看到my screen
和SCREEN
进程不被视为父项和子项,这表明我已附加到现有会话。
# ps fao pid,command
25070 SCREEN -U
25071 \_ vim +let &t_Co=256
25073 \_ -bash
25077 \_ -bash
...
18364 \_ sshd: username [priv]
18366 | \_ sshd: username@pts/17
18367 | \_ -bash
870 | \_ screen -U -x
新鲜的会议看起来像这样:
19645 | \_ screen -S MySession
19646 | \_ SCREEN -S MySession
19647 | \_ bash
1485 | | \_ python
19700 | \_ bash
kill
:像这样的命令kill -s SIGCHLD <PID>
,其中<PID>
是进程ID号码(在我的示例输出最左边的列)
这是我在使用vi的过程中发生的,这期间会话冻结,我断开了连接。当尝试使用screen -Arx重新连接到屏幕时,该过程将挂起。
可能正在运行类似的子进程,导致屏幕挂起。如果您还记得其中一个重点,否则要获取在屏幕下运行的子进程的列表,请执行以下操作:
ps ux -H
这将显示嵌套的子进程:
zwood 28481 0.0 0.0 101148 8844 ? Ss Oct07 1:36 SCREEN -S mysession
zwood 28482 0.0 0.0 67436 1744 pts/2 Ss+ Oct07 0:00 /bin/bash
zwood 28515 0.0 0.0 67556 1876 pts/4 Ss+ Oct07 0:00 /bin/bash
zwood 4498 0.0 0.0 67436 1772 pts/5 Ss Oct07 0:00 /bin/bash
zwood 2007 0.0 0.0 73604 1324 pts/5 S+ 15:47 0:00 vi /home/zwood/.bashrc.custom
zwood 14670 0.0 0.0 67436 1768 pts/13 Ss+ Oct14 0:00 /bin/bash
zwood 27002 0.0 0.0 67436 1720 pts/11 Ss+ Oct20 0:00 /bin/bash
zwood 24748 0.0 0.0 67432 1712 pts/14 Ss+ Oct21 0:00 /bin/bash
首先杀死了导致问题的vi进程后,我能够重新连接屏幕而没有任何问题。杀死以前重新挂接到屏幕上的所有进程可能也是一个好主意。只需使用:
kill -9 <pid>
我不知道屏幕在内部做什么,为什么vi导致屏幕挂起,或者为什么取消vi进程会使屏幕恢复原状。过去,我曾遇到过有关屏幕的问题,并且尝试过大多数人在此主题中所推荐的方法,但是没有运气。找到这个有问题的子进程是唯一对我有用并且始终如一的工作。