08
2025
04
20:11:22

Linux命令screen:实现终端切换、工作环境保存与画面同步

Screen基础

Screen,这款由GNU计划推出的自由软件,专为命令行终端切换而设计。它允许用户轻松连接并切换多个本地或远程的命令行会话。可将其视为窗口管理器的命令行界面版本,提供统一管理多个会话的界面与功能。

启动Screen并创建新窗口

在Linux系统中,直接输入screen命令即可启动该软件。但推荐为每个screen会话命名,以便于管理。例如,要创建一个名为adam的新终端,可以输入:

screen -S adam

启动后,Screen会自动创建窗口No.0,并打开系统默认的shell(通常是bash)。尽管你感觉仿佛一切如常,但实际上已经踏入了Screen的世界。请注意,此时你的环境已与原先的终端进程完全分离,在此运行的程序将不受断网或关闭终端的影响,可继续独立运行。同时,你可以随时在别的窗口中恢复之前的工作界面。

当然,你也可以在screen命令后添加参数,直接打开指定的程序,如:

screen vi david.txt

会话的分离与恢复

在Screen中,你可以随时中断(detach)screen会话而不会中断其中程序的运行。之后,你可以在需要时重新连接(attach)该会话,继续控制各窗口中运行的程序。例如,你打开一个screen窗口编辑/tmp/david.txt文件:

screen -S adam
vi /tmp/david.txt

若想暂时退出编辑,比如去喝杯咖啡,只需在screen窗口中按下Ctrl(C)+a,再按d键。Screen会给出detached提示,表示你已暂时中断会话。半小时后回来,只需找到该screen会话,便可重新控制之前的编辑工作。
screen -ls

重新连接会话:

screen -r adam

一切照旧,毫不间断。

但需注意,若未在另一台机器上分离Screen会话,则无法恢复。此时,可使用以下命令强制分离并转移会话:

screen -d -r test

清除dead会话:

若某一会话意外终止(如人为终止),screen -list将显示其为dead状态。此时,应使用screen -wipe命令清除该会话。

关闭或杀死窗口:

在正常退出窗口中最后一个程序后,窗口将自动关闭。或使用Ctrl + a, k快捷键杀死当前窗口及其中的进程(请谨慎操作)。

若Screen会话中最后一个窗口关闭,整个会话将结束,screen进程也将终止。

此外,除了依次退出/杀死当前Screen会话中的所有窗口,还可以使用Ctrl + a后输入quit命令来退出会话。请注意,这将杀死所有窗口及其中的程序。实际上,Ctrl + a快捷键允许输入的命令远不止这些,如split用于分屏等,但通常我们认为快捷键操作更为便捷。

这个命令能让你朋友的终端Attach到你的Screen会话上,而且你的终端不会因此Detach。这样,你和朋友就能共享同一个会话了。如果你们现在处在同一个窗口里,那就仿佛是坐在同一台显示器前,你的操作会实时展示给你朋友,反之亦然。当然,如果你们切换到这个会话的不同窗口,那你们仍然可以各自进行不同的操作。

会话锁定与解锁

Screen提供了快捷键Ctrl + a, 接着按s来锁定会话。一旦会话被锁定,任何屏幕输入都不会产生反应。但请注意,尽管屏幕上没有反应,但你的输入实际上已被Screen中的进程接收。要解锁一个会话,可以使用快捷键Ctrl + a, 再按q。

另外,你也可以使用Ctrl + a, x来锁定会话,但这种方式会在锁定后为会话提供密码保护。这意味着,只有输入正确的密码才能继续访问这个会话。

在Screen会话之外进行操作

除了直接在Screen会话中操作外,你还可以在会话之外通过screen命令来操控一个Screen会话。这为使用Screen作为脚本程序提供了便利。虽然关于Screen在脚本中的应用超出了我们的入门范围,但让我们来看一个简单的例子,感受一下在会话之外对Screen的操作:

screen -S test -X screen pingwww.baidu.com

这个命令会在一个名为test的Screen会话中创建一个新窗口,并在其中运行ping命令。

体验一下效果,是不是很酷。在一个窗口中往另外的窗口提交命令,感受不同屏幕区域间的交互。

屏幕分割

如今显示器屏幕如此之大,充分利用这一优势,将屏幕分割成不同区域来同时显示多个Screen窗口,无疑是一项令人兴奋的功能。你可以通过快捷键Ctrl + a, S轻松地将屏幕水平分割,而在Screen 4.00.03版本之后,更支持垂直分屏,快捷键为Ctrl + a, |。分屏后,你可以使用Ctrl + a在各个区块间自由切换,每个区块上都可以独立创建窗口并运行进程。

此外,你还可以使用Ctrl + a, X来关闭当前焦点所在的屏幕区块,或者使用Ctrl + a, Q来关闭除当前区块之外的其他所有区块。值得注意的是,关闭的区块中的窗口并不会真正关闭,你仍然可以通过窗口切换来找到并重新激活它们。

想要了解更多关于Screen的细节和功能,可以查阅相关手册或在线资源。




推荐本站淘宝优惠价购买喜欢的宝贝:

image.png

本文链接:https://hqyman.cn/post/10215.html 非本站原创文章欢迎转载,原创文章需保留本站地址!

分享到:
打赏





休息一下~~


« 上一篇 下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

请先 登录 再评论,若不是会员请先 注册

您的IP地址是: