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
补充
- 当会话输出较多时,我们要看历史输出使用方向键和滚轮是没有用的,需要
Ctrl+A再按[进入copy模式,此时可以滚动、搜索、复制。按Esc退出复制模式 - 有时未正常退出会导致这个screen状态为
Attached(有用户登陆),导致没办法进入,需要执行screen -D -r <session-id>,踢掉之前的用户,就可以登录了

浙公网安备 33010602011771号