通过ssh在Linux终端下工作,有一个很烦的事情就是,如果需要执行一个长时间的命令(例如拷贝一个大文件,或者做DDL)时,如果终端意外断开(网络或者别的原因),一般命令就会终止,当然你可以使用nohup命令,这里提供另一个办法:使用screen。
Updates
修改Bash提示符@2024-05
每次去执行echo $TERM
也挺麻烦的,所以,另一个办法就是在Bash的提示符中,将变量$TERM
展示出来:
vim ~/.bash_profile
...
export PS1="[\u@$TERM \W]\$ "
...
如何判断当前是不是在screen下@2024-05
只需要在终端尝试输出$TERM
即可:
echo $TERM
screen
如果是非screen下,可能会看到如下输出:
echo $TERM
xterm-256color
初次使用vim按ctrl+s
锁屏@2024-05
同样是发送了XOFF
导致的锁屏问题。
在现代的开发者中,如果初次使用vim
,还不习惯使用:w
进行保存时,比较容易遇到这个问题,因为现在软件中,ctrl+s
已经默认是保存操作了。
这也是同样的原因,可以使用ctrl+q
进行解锁操作。这与screen
是类似的,同样是发送了XOFF
命令字符导致的。
关于ctrl+a,S
锁屏的问题@2024-05
在刚开始使用screen
的时候,经常会误触ctrl+a,S
(ctrl+a,后面跟一个命令键S)导致屏幕锁定,这时候可以通过ctrl+a,Q
来解除锁定。
如果被这个困扰的比较厉害,可以考虑禁用ctrl+a,S
命令。禁用的方法是在~/.screenrc
中新增如下命令内容(参考):
bind s
为什么ctrl+a,S
会锁定屏幕@2024-05
经过一段时间的搜索挖掘,大致确认,这是一个早期屏幕输出设备的一个指令之一,可以控制屏幕输出流。ctrl+a,S
更多的时候是ctrl+s
,会发送XOFF
命令字符(ASCII码编号是19)告诉服务器不要在发送输出内容,也就是我们感受到的“锁定屏幕”,可以使用ctrl+a,q
或ctrl+q
再次发送XON
命令字符(ASCII码编号是17)实现解锁。
关于更多底层原理可以参考如下文章:
Update(2010-10-08) :screen -ls查看列表
[supu@host u01]$ screen -ls
There is a screen on:
9348.supu (Detached)
1 Socket in /var/run/screen/S-supu.
可以通过kill -9 9348杀死该会话,然后通过screen -wipe清理被杀死的会话。
概述
一般,我们创建一个screen会话,然后连接会话并在会话下工作,这时候,我们可以随时挂起会话,去做别的事情,而且这个挂起的会话会一直在后台执行。而后又可以重新连接会话。下面是一个简单的How-to:
1. How-to
1.1 创建一个screen会话
screen -dmS supu
该命令,创建一个名为supu的会话,当时并不立刻进入会话。
(more…)