我有一个屏幕会话,其中我创建了 10 个会话。
我使用下面的组合键切换到附加的活动屏幕会话。
ctrl + a + 数字 0 到 9
Ctrl-a 0-9 转到编号为 0-9 的窗口
我现在已经创建了第 10 个会话
ctrl-a 10 将结束到屏幕会话 1。
如何切换到第十届会议?
解决方法是,转到第 9 个会话 Ctrl-a 9,然后 ctrl-n 将引导我到第 10 个会话。
我提到的链接是 Linux 中的学习屏幕
作为设置桌面的启动脚本的一部分,我初始化了一个带有多个窗口的屏幕。我通过启动一个守护进程并发送它-X screen和-X stuff命令来做到这一点,最后重新附加-r.
不幸的是,“创建守护进程并重新连接”方法使我创建的所有窗口都将退格键变成了“杀死整行”操作。如果我在 screen 中创建新窗口C-c c,则新窗口没有这种行为。这是一个屏幕错误,还是我可以做一些特别的事情来解决这个问题?如果重要的话,我正在使用 xfce4 和 ubuntu 12.10
使用以下内容进行重现:
screen -S -dm
screen -r
Run Code Online (Sandbox Code Playgroud)
键入几个字符并按退格键。
我注意到在分离并重新连接屏幕会话后,我丢失了滚动历史记录。我已经做了一些搜索,但是每当我组合“屏幕”和“滚动”时,我就会被滚轮集成指令淹没。
无论如何,概要:
我正在尝试使用
屏幕/ dev / ttyUSB0
通过USB串行接口连接到旧计算机。
我希望在此网站上注册后,我会收到我问题的答案。我进行了搜索,但是还没有想出在命令行中放置正确的选项的方法,以从计算机中获得无垃圾的反馈(收到的文本都被弄乱了)。
我的操作系统是CentOs,Gnome 2.16.0。我看到有一个名为KPPP的程序,其中有一个“ Terminal ...”,但也没有弄清楚。因此,我试图将CLI与“ screen”一起使用,但是在设置正确的参数时遇到了麻烦(显然,我不知道如何将这些参数与stty一起使用)。这不是安装应用程序或对此计算机执行任何操作的选择,因此我必须使用已有的功能。“屏幕”似乎可以完成任务,但是如前所述,收到的文本是乱码(“ $$ @%idj ldj”等)
我需要这些参数用于计算机一:
波特:9600数据位:8奇偶校验:无停止位:2流量控制:硬件。
对于两台计算机,我需要:
波特率:9600数据位:7奇偶校验:偶数停止位:1流量控制:硬件
波特率很容易;
屏幕/ dev / ttyUSB0 9600
但是我不知道该怎么办。。我找到了停止位的选项:
cstopb(使用两个停止位)
-cstopb(使用一个停止位)
但是如何正确使用它?
屏幕/ dev / ttyUSB0 9600 -cstopb
要么
屏幕/ dev / ttyUSB0 9600,-cstopb
因此,如果有人可以通过所有列出的参数通过串行接口帮助我连接到另一台计算机,我将非常感激!
2016年12月22日更新:
我已经找到了这本有关stty的手册:http : //osr507doc.sco.com/man/html.C/stty.C.html
数据位与此选项相同吗?
Run Code Online (Sandbox Code Playgroud)cs5 cs6 cs7 cs8 Select character size (see termio(M)).
平价:
Run Code Online (Sandbox Code Playgroud)parodd (-parodd) Select odd (even) parity.
停止位:
Run Code Online (Sandbox Code Playgroud)cstopb (-cstopb) Use two (one) stop bits per character.
但是硬件控制呢?
无论如何; 这仍然无法正常工作;
Run Code Online (Sandbox Code Playgroud)screen /dev/ttyUSB0 9600 …
当我使用tqdmin 时screen,它会无限期地在栏中打印一个新行和未知字符。
Epoch 0: 5%|?? | 255/5474 [03:31<1:12:09, 1.21it/s]
Epoch 0: 2%|? | 90/5474 [01:24<1:23:46, 1.07it/s]
Epoch 0: 2%|? | 89/5474 [01:23<1:23:57, 1.07it/s]
Run Code Online (Sandbox Code Playgroud)
我用bash作为默认shell并添加了以下配置
export LC_ALL=en_US.UTF-8
export LANG=en_US.UTF-8
export LANGUAGE=en_US.UTF-8
root@35573c9f245c:~/git/pytorch-openai-transformer-lm# cat ~/.screenrc
# ~/.screenrc
defshell -bash # dash makes it a login shell
Run Code Online (Sandbox Code Playgroud)
相同的代码在其他终端中运行良好。
关于这个问题的任何提示?谢谢!
是否可以查看正在运行的屏幕会话的内容?
换句话说,就是不进房间就往窗户里看!
例如
ssh user@remote.server screen --look (and show me what's happening)
Run Code Online (Sandbox Code Playgroud)
我想有点像使用 SSH 时一次性快速连接和分离。
你听懂了吗?
我确定在屏幕手册中有一个答案,但我找不到它!我希望GNU屏幕生成的bash shell除了已经运行的.bashrc之外还要在文件中提供源代码.
我无法在.bashrc中调用该文件,因为在我们的站点上.bashrc文件在登录时自动重新生成.
有任何想法吗?
编辑:
我创建了这个小脚本(screen_bash.sh):
bash --rcfile ~/.screen_bashrc
Run Code Online (Sandbox Code Playgroud)
然后补充说
shell $HOME/screen_bash.sh
Run Code Online (Sandbox Code Playgroud)
到我的.screenrc
〜/ .screen_bashrc文件是
<my_setup_stuff>
export SHELL=bash
Run Code Online (Sandbox Code Playgroud)
SHELL = bash是必要的,这样像vim这样的程序可以正确启动子shell.
假设我忘记在登录开始时运行屏幕,我启动了像emacs这样的程序,打开了很多文件,现在我想将它附加到屏幕会话中.有没有办法做到这一点?或者我是否必须退出emacs,运行屏幕,然后再次运行emacs,从一开始就打开我的工作?
谢谢你的帮助.
我知道这些问题多年来一直被问到,而答案往往是screen或者tmux.screen如果我知道我将离开会话很长时间,或者网络太糟糕而无法保持可靠的连接,我肯定会在开始时使用.
主要的问题是,当我开始一些会话并发现它必须持续很长时间,或者连接只是意外丢失.在后一种情况下,通常当我立即开始另一个会话时,我可以发现之前的进程没有被杀死,但我无法重新连接到他们的终端.
所以我想知道在意外断开ssh会话后很长时间内是否有可能阻止正常进程被杀死.最重要的是我可以重新连接到他们的终端,而不是screen提前启动它们.
如果没有,是否可以将已经启动的裸ssh会话移动到新screen会话中以便以后重新连接?
我正在尝试访问连接到USB串行端口的设备。设置为57600波特,8位,1个停止位,无奇偶校验。设备每秒输出一条状态行,并接受键入的命令。
我想使用GNU屏幕启动双向通讯,所以我正在使用以下命令:
screen /dev/ttyS2 57600,cs8
Run Code Online (Sandbox Code Playgroud)
但是,我只是得到一个空白屏幕,没有从设备收到任何信息。
使用teraterm可以很好地沟通,我也可以做到这一点
stty -F /dev/ttyS2 57600 cs8
cat /dev/ttyS2
Run Code Online (Sandbox Code Playgroud)
查看设备的状态输出。
我尝试了ixon,ixoff,crtscts和clocal的各种组合,但没有任何区别。
如何确定正确的命令?
我在Windows 10上使用Cygwin。