Linux-screen命令

对于Linux下运行多个程序或服务,使用Screen来启动不同的项目还是挺不错的。(比如说开个Terriria服务器,再开个Minecraft服务器,再跑个SpringBoot后台程序等等)

以下只写了最基本的使用

安装

默认情况下可能是没安装的

sudo apt update 
sudo apt install screen

Screen指令集

screen [-AmRvx -ls -wipe][-d <作业名称>][-h <行数>][-r <作业名称>][-s <shell>][-S <作业名称>]

说明

  • -A  将所有的视窗都调整为目前终端机的大小。
  • -d<作业名称>  将指定的screen作业离线。
  • -h<行数>  指定视窗的缓冲区行数。
  • -m  即使目前已在作业中的screen作业,仍强制建立新的screen作业。
  • -r<作业名称>  恢复离线的screen作业。
  • -R  先试图恢复离线的作业。若找不到离线的作业,即建立新的screen作业。
  • -s<shell>  指定建立新视窗时,所要执行的shell。
  • -S<作业名称>  指定screen作业的名称。
  • -v  显示版本信息
  • -x  恢复之前离线的screen作业。
  • -ls--list  显示目前所有的screen作业。
  • -wipe  检查目前所有的screen作业,并删除已经无法使用的screen作业。

离开连接的screen终端:【Ctrl】+【A】 D

翻页:[Ctrl]+[U/D][Ctrl]+[A] [Esc] 或 [[]进入copy mode使用光标

杀掉不需要的screen session :kill -9 [pid]

常用:

screen -v
# Screen version 4.06.02 (GNU) 23-Oct-17

screen -S task # 创建名为task的终端
screen -ls # 显示所有终端
screen -r task # 恢复名为task的终端

新建终端

# 新建终端(以hostname命名)
screen

# 新建终端并命名
screen -S Hello

# 创建终端并执行命令
screen vi ~/test.py

# 创建终端并命名,如果该命名已存在,则进入该终端 (相当于-S + r)
screen -R Hello

返回终端

# 查看已开启的终端
screen -ls
# 当没有运行的中断时显示 `No Sockets found in /run/screen/S-ubuntu.`

screen -r Hello
# -R 相当于是 -r+-S

终端操作

在每个 screen session 下,所有命令都以 ctrl+a(C-a) 开始。

操作 描述
C-a ? Help,显示简单说明
C-a ” 列出终端列表
C-a A 重命名终端
C-a c 创建新的终端, 并切换到该终端
C-a d 暂时断开会话, 但所有任务都依然执行
C-a K 关闭当前终端, 并切换到下一个终端 (当没终端时 退到原始 shell 终端)
C-a n 切换到下一个终端
C-a p 切换到上一个终端
C-a t 显示当前时间, 和系统的 load
C-a S 新建水平线分割终端
C-a Tab 水平线切换终端
C-a X 关闭当前终端
C-a + 扩大当前终端
C-a – 缩小当前终端
C-a [Space] 窗口切换
C-a [0-9] 在 0-9 个终端之间切换
C-a C-a 最近使用的 2 个窗口切换
C-a w 列出终端列表
C-a x 锁住当前窗口,需用用户密码解锁
C-a z 把当前会话放到后台执行,用 shell 的 fg 命令则可回去。
  • 退出并关闭 -> 输入exit

补充

  1. 当会话输出较多时,我们要看历史输出使用方向键和滚轮是没有用的,需要Ctrl+A 再按[进入copy模式,此时可以滚动、搜索、复制。按Esc退出复制模式
  2. 有时未正常退出会导致这个screen状态为Attached(有用户登陆),导致没办法进入,需要执行screen -D -r <session-id>,踢掉之前的用户,就可以登录了
posted @ 2024-12-24 12:13  Zang998  阅读(451)  评论(0)    收藏  举报