SLURM交互节点上的Emacs乱码屏幕

SLURM交互节点上的Emacs乱码屏幕,emacs,slurm,terminfo,Emacs,Slurm,Terminfo,当我远程登录SLURM交互节点时,emacs有时会弄乱屏幕。正如我在下面所描述的,我认为问题在于SLURM interactive node弄乱了查询/确认终端信号,一些字符被删除,导致出现故障 设置 我实际使用的电脑:MacBookAir(10.13.2) 终端:iTerm2构建3.1.7 ssh到集群 SLURM交互节点(即srun--nodes=1…--pty/bin/bash) emacs:GNU emacs 27.1用于终端模式(即emacs-nw) 有时当屏幕重新绘制时,会出现混

当我远程登录SLURM交互节点时,emacs有时会弄乱屏幕。正如我在下面所描述的,我认为问题在于SLURM interactive node弄乱了查询/确认终端信号,一些字符被删除,导致出现故障

设置

  • 我实际使用的电脑:MacBookAir(10.13.2)
  • 终端:iTerm2构建3.1.7
  • ssh到集群
  • SLURM交互节点(即
    srun--nodes=1…--pty/bin/bash
  • emacs:GNU emacs 27.1用于终端模式(即
    emacs-nw
有时当屏幕重新绘制时,会出现混乱:

当屏幕上有许多窗格或移动大量文本时,这种情况似乎会发生得更多。 基于emacs的这一部分,我尝试使用
C-l(recenter top-bottom)
重新绘制屏幕,这暂时修复了当前的故障

通过在我的
bash profile
中设置
$TERM=screen
$TERM=xterm-256color
,我看到了不同的配色方案,但问题依然存在

注意,我只是在登录到interactive节点时看到了小故障,而不是从集群上的head节点。利用登录节点正常的事实,这可以提供有用的诊断信息。这使我怀疑问题在于从集群发送的so字符的ENQ/ACK或pad定时被丢弃。这在针对
tack
terminfo诊断程序的中进行了讨论

登录节点交互节点使用
tack
给出相同的值

$ tack
Using terminfo from: /home/maom/opt/miniconda3/share/terminfo/x/xterm-256color

Name: xterm-256color|xterm with 256 colors
\r ^M (cr)    = ^M
\n ^J (ind)   = ^J
\b ^H (cub1)  = ^H
\t ^I (ht)    = ^I
      (clear) = ^[[H^[[2J
      (home)  = ^[[H
ENQ   (u9)    = ^[[c
ACK   (u8)    = ^[[?1;2c

Terminal size: 204 x 52.  Baud rate: 38400.  Frame size: 10.0
登录节点上使用
波特率测试

1600949 characters per second.  Baudrate 52  Done
交互节点上使用
波特率测试
每秒字符数大约慢30%:

1090426 characters per second.  Baudrate 52  Done
并且,在登录节点上使用
测试ENQ/ACK握手
,给出:

Testing ENQ/ACK, standby...
This program expects the ENQ sequence to be answered with the ACK character.  This will help the program reestablish synchronization when the terminal is overrun with data.

ENQ sequence from (u9): ^[[c
ACK received: ^[[?1;2c
Length of ACK 7.  Expected length of ACK 7.
Terminating character found in (u8): c
在交互节点上使用测试ENQ/ACK握手时,节点给出:

Testing ENQ/ACK, standby...

ACK terminating character: c

是否有办法更新terminfo以修复故障?请与群集管理支持部门合作解决此问题?

我也遇到过同样的问题,我不知道最佳解决方案,但这可能会有所帮助。首先,当您执行
srun
时,最好在bash上传递
-li

srun --nodes=1 ... --pty /bin/bash -li
这将确保它加载通常在您正常登录时打开的交互式bash配置文件


这并不能完全解决我的问题,但如果我在交互式会话中执行
tmux
,然后运行
emacs
,那么我就不会出现乱码问题。

可能不会-如果终端/连接没有流量控制,波特率是相关的(现在只有当你将某个东西连接到串行端口时,你才会看到).@ThomasDickey,你能澄清一下吗?你是说这是一个可以解决的问题吗?或者,这可能不是问题所在,因为这不是一个没有流量控制的连接,例如串行端口?后者-我怀疑您只是遇到了网络延迟(没有多少工作要做…)。