当Matlab崩溃时,Mac OS上的X11连接中断

当Matlab崩溃时,Mac OS上的X11连接中断,matlab,x11-forwarding,Matlab,X11 Forwarding,我正在linux机器上远程使用MATLAB(2013a)。 我使用ssh-X(OpenSSH_5.9p1,OpenSSL 0.9.8y 2013年2月5日)通过ssh转发X11。 X11服务器是Mac OS 10.8.5上的XQuartz 2.7.4(xorg服务器1.13.0) 当我的MATLAB崩溃时,它以某种方式终止了X11连接,我需要通过ssh重新连接以重新建立新的X11,否则MATLAB拒绝启动。 X11应用程序这样做正常吗?有没有办法在不通过ssh重新连接的情况下修复X11 当我没有

我正在linux机器上远程使用MATLAB(2013a)。 我使用
ssh-X
(OpenSSH_5.9p1,OpenSSL 0.9.8y 2013年2月5日)通过ssh转发X11。 X11服务器是Mac OS 10.8.5上的XQuartz 2.7.4(xorg服务器1.13.0)

当我的MATLAB崩溃时,它以某种方式终止了X11连接,我需要通过ssh重新连接以重新建立新的X11,否则MATLAB拒绝启动。 X11应用程序这样做正常吗?有没有办法在不通过ssh重新连接的情况下修复X11

当我没有飞溅(-nosplash)、没有gui、没有编辑器、也没有绘图时,就会发生这种情况


编辑:我正在
tmux
(或者有时
screen
)中的一个shell(
bash
)上运行MATLAB。

您需要正确设置
DISPLAY
变量,才能使X11转发正常工作——一些
ssh-X
ssh-Y
应该可以为您做些什么。崩溃前后(
echo$DISPLAY
)的显示值是多少?它应该类似于
localhost:10.0
。我想知道变量是否被弄乱了,并没有干净地退出


还有,看看这是否有什么不同。如果这没有帮助,请尝试在
/etc/ssh/ssh\u config
中添加
ForwardX11Trusted yes
,显示用于启动连接和启动MATLAB的命令的完整序列以及所有错误消息会很有帮助。例如:

# batch mode
client$ ssh -v -x user@server           # small "x" disables X11 forwarding
server$ unset DISPLAY
server$ nohup matlab -nodesktop -nodisplay -noFigureWindows -nosplash \
          -r "ver; quit;" > m_output.out 2>&1 < /dev/null &

# interactive mode
client$ export DISPLAY=localhost:0.0
client$ ssh -v -X user@server           # enable X11 forwarding
server$ matlab
批处理模式 客户端$ssh-v-xuser@server#小“x”禁用X11转发 服务器$unset显示 服务器$nohup matlab-nodesktop-nodisplay-noFigureWindows-nosplash\ -r“ver;quit;”>m_output.out 2>&1 一些想法:

  • 打开更详细的输出(
    ssh-vv
    ),并调查ssh连接关闭的原因(调试输出消息或任何日志文件)

  • 您是直接从
    ssh
    运行命令,还是分两步执行(使用
    ssh
    连接,然后从分配的shell以交互方式启动命令)

  • 如果我理解正确,在不使用X11转发时也会发生这种情况

  • 在使用或screen/tmux时是否也会发生这种情况?看

  • 尝试将
    TCPKeepAlive
    添加到ssh配置中

  • 使用自动重新连接SSH连接怎么样

  • 您是否使用任何自定义SSH配置?(如果是,则显示
    ssh_config
    sshd_config
    文件中的相关部分)

  • 在启动MATLAB之前,请尝试在后台运行另一个进程


一直以来,MATLAB有时会在返回时恢复。MathWorks建议改用不同的shell(如tcsh或zsh)。

您是通过
ssh
命令启动MATLAB,还是在获得shell后手动启动MATLAB?问得好,我总是遇到这个问题,从来没有想过要问一个问题来解决它。@Werner当您的终端出现问题时,您始终可以尝试
reset
和/或
stty sane
:)出于测试目的,可以方便地找到一种使Matlab崩溃的方法@Amro在回答这个问题时发现了一些东西:哇,你真的可以用
S=struct()使MATLAB崩溃;S=setfield(S,{},{},{},0)
!对于像我们这样的疯子来说,这是一个很好的建议。
DISPLAY
仍然是
localhost:10.0
。哦,好吧。这就是我在Linux上使用MATLAB和Cygwin的X Window服务器时经常出现的问题。是的。实际上,
-Y
开关使它更加稳定。让我再测试一下,接受你的答案。