Linux之会话管理

一、问题描述

我们公司使用Teleport连接到远程服务器上,然后执行相关操作如执行很久的代码任务。但是长时间就会被自动结束掉,可能需要挂载几天的那种,经常会自动中断,又可能,如果当前网络不稳定,或者本机出现故障,导致链接失败,命令被迫停止等。

二、解决办法


        那么如何解决这种问题呢,这时我们需要一个可以持续性保持会话的服务,来随时保证Session连接,不会影响正常服务。有两种方法,screentmux(推荐)

方法一(screen):

#安装screen
yum install screen 

常用参数说明:
screen -S name -> 新建一个叫name的session
screen -ls -> 列出当前所有的session
screen -r name -> 回到name这个session
screen -d name -> 远程detach某个session
screen -d -r name -> 结束当前session并回到name这个session
 

说明:只要Screen本身没有中止,即进程仍在,其内部运行的会话都可以恢复。这一点对于远程登录的用户特别有用——即使网络连接中断,用户也不会失去对已经打开的命令行会话的控制。只要再次登录到主机上执行screen -r就可以恢复会话的运行,但是才使用一段时间后,不知道怎么回事screen被服务器kill掉了

方法二(tmux):

tmux工具可以实现在同一个会话中进行多窗口的显示的功能

特点

  1. 可以让新窗口接入已经存在的会话。
  2. 允许每个会话有多个连接窗口,因此可以多人实时共享会话。
  3. 在单个会话窗口中,可以分割成多个窗口,相当于之前访问的多个会话。支持窗口任意的垂直水平拆分

安装

sudo yum install tmux

 常用操作参数:

# 查看有所有tmux会话
指  令:tmux ls
快捷键:Ctrl+b s

# 新建tmux窗口
指  令:tmux new -s <session-name>

# 重命名会话
指  令:tmux rename-session -t <old-name> <new-name>
快捷键:Ctrl+b $

# 分离会话
指  令:tmux detach  或者使用  exit(关闭窗口)
快捷键:Ctrl+b d

# 重新连接会话
指  令:tmux attach -t <session-name>  或者使用 tmux at -t <session-name>

#平铺当前窗格
快捷键:Ctrl+b z (再次 Ctrl+b z 则恢复)

# 杀死会话
指  令:tmux kill-session -t <session-name>

# 切换会话
指  令:tmux switch -t <session-name>

# 划分上下两个窗格
指  令:tmux split
快捷键:Ctrl+b “

# 划分左右两个窗格
指  令:tmux split -h
快捷键:Ctrl+b %

# 光标切换到上方窗格
指  令:tmux select-pane -U
快捷键:Ctrl+b 方向键上

# 光标切换到下方窗格
指  令:tmux select-pane -D
快捷键:Ctrl+b 方向键下

# 光标切换到左边窗格
指  令:tmux select-pane -L
快捷键:Ctrl+b 方向键左

# 光标切换到右边窗格
指  令:tmux select-pane -R
快捷键:Ctrl+b 方向键右

快捷键: 

在tmux窗口中,Ctrl+b激活控制台

?	列出所有快捷键;按q返回
d	脱离当前会话;这样可以暂时返回Shell界面,输入tmux attach能够重新进入之前的会话
D	选择要脱离的会话;在同时开启了多个会话时使用
Ctrl+z	挂起当前会话
r	强制重绘未脱离的会话
s	选择并切换会话;在同时开启了多个会话时使用
:	进入命令行模式;此时可以输入支持的命令,例如kill-server可以关闭服务器
[	进入复制模式;此时的操作与vi/emacs相同,按q/Esc退出
~	列出提示信息缓存;其中包含了之前tmux返回的各种提示信息
'''窗口操作'''

c	创建新窗口
&	关闭当前窗口
数字键	切换至指定窗口
p	切换至上一窗口
n	切换至下一窗口
l	在前后两个窗口间互相切换
w	通过窗口列表切换窗口
,	重命名当前窗口;这样便于识别
.	修改当前窗口编号;相当于窗口重新排序
f	在所有窗口中查找指定文本
'''面板操作'''

”           将当前面板平分为上下两块
%	        将当前面板平分为左右两块
x	        关闭当前面板
!	        将当前面板置于新窗口;即新建一个窗口,其中仅包含当前面板
Ctrl+方向键	以1个单元格为单位移动边缘以调整当前面板大小
Alt+方向键	以5个单元格为单位移动边缘以调整当前面板大小
Space	        在预置的面板布局中循环切换;依次包括even-horizontal、even-vertical、main-horizontal、main-vertical、tiled
q	        显示面板编号
o	        在当前窗口中选择下一面板
方向键	        移动光标以选择面板
{	        向前置换当前面板
}	        向后置换当前面板
Alt+o	        逆时针旋转当前窗口的面板
Ctrl+o	        顺时针旋转当前窗口的面板

技巧:

ctrl+b 然后按下shift+:在下面输入set -g mouse on 然后就可以鼠标操作了

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值