在运行 Snow Leopard 的 iMac 上,我可以打开终端窗口并启动“屏幕”会话,没有任何问题。但是,如果我 ssh 进入同一台机器(从其他地方或本地),然后尝试启动“屏幕”会话,它就会挂起。根本没有输出。它不会响应 Ctrl-d、Ctrl-c 等,并且必须通过它的 PID 被杀死。在本地终端中创建的会话可以从 ssh 会话中恢复。这是否有助于直接怀疑任何配置?
我怀疑 .bashrc、.profile 等文件中的一个存在问题,但不知道哪个适用于这种情况,并且最近没有在该区域进行任何更改。所有这些都是作为同一用户完成的。
我 99% 确定这在不久前还有效,但我认为这种情况之前没有出现过的可能性很小。
回答以下吉尔斯的问题:
在这两种情况下,环境变量是相同的。大多数都是空白的——只设置了 COLUMNS、LINES、HOME、PATH、SHELL 和 TERM。
在挂起状态下,屏幕根本不接受任何输入。当它被杀死时,父 shell 接收任何用于屏幕的键盘输入。它不消耗CPU时间。
观察启动的两个屏幕进程,编号较低的一个正在执行以下操作:
$ sudo dtruss -p 1545
SYSCALL(args) = return
sigreturn(0x7FFF5FBFEE80, 0x1E, 0x7FFF5FBFEE80) = 0 Err#-2
__pthread_canceled(0x0, 0x0, 0x7FFF5FBFEF38) = -1 Err#22
setitimer(0x0, 0x7FFF5FBFEF40, 0x7FFF5FBFEF20) = 0 0
kill(0x60A, 0x0, 0x1) = 0 0
sigaction(0xE, 0x7FFF5FBFEF10, 0x7FFF5FBFEF50) = 0 0
setitimer(0x0, 0x7FFF5FBFEF40, 0x7FFF5FBFEF20) = 0 0
sigprocmask(0x0, 0x0, 0x7FFF5FBFEF4C) = 0x0 0
sigsuspend(0x0, …Run Code Online (Sandbox Code Playgroud) gnu-screen ×1