千家信息网

如何用screen后台运行程序

发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,这篇文章的内容主要围绕如何用screen后台运行程序进行讲述,文章内容清晰易懂,条理清晰,非常适合新手学习,值得大家去阅读。感兴趣的朋友可以跟随小编一起阅读吧。希望大家通过这篇文章有所收获!用scre
千家信息网最后更新 2025年12月02日如何用screen后台运行程序

这篇文章的内容主要围绕如何用screen后台运行程序进行讲述,文章内容清晰易懂,条理清晰,非常适合新手学习,值得大家去阅读。感兴趣的朋友可以跟随小编一起阅读吧。希望大家通过这篇文章有所收获!

用screen 在后台运行程序

我们常需要SSH 或者telent 远程登录到Linux 服务器,经常运行一些需要很长时间才能完成的任务,在此期间不能关掉窗口或者断开连接,否则这个任务就会被杀掉,一切半途而废了。这时,我们可以用screen命令解决这个问题。

screen命令可以实现当前窗口与任务分离,我们即使离线了,服务器仍在后台运行任务。当我们重新登录服务器,可以读取窗口线程,重新连接任务窗口。

一:主要功能

会话恢复

只要Screen本身没有终止,在其内部运行的会话都可以恢复。这一点对于远程登录的用户特别有用--即使网络连接中断,用户也不会失去对已经打开的命令行会话的控制。只要再次登录到主机上执行screen -r就可以恢复会话的运行。同样在暂时离开的时候,也可以执行分离命令detach,在保证里面的程序正常运行的情况下让Screen挂起(切换到后台)。这一点和图形界面下的VNC很相似。

多窗口

在Screen环境下,所有的会话都独立的运行,并拥有各自的编号、输入、输出和窗口缓存。用户可以通过快捷键在不同的窗口下切换,并可以自由的重定向各个窗口的输入和输出。Screen实现了基本的文本操作,如复制粘贴等;还提供了类似滚动条的功能,可以查看窗口状况的历史记录。窗口还可以被分区和命名,还可以监视后台窗口的活动。

会话共享

Screen可以让一个或多个用户从不同终端多次登录一个会话,并共享会话的所有特性(比如可以看到完全相同的输出)。它同时提供了窗口访问权限的机制,可以对窗口进行密码保护。

GNU's Screen 官方站点:http://www.gnu.org/software/screen/

二:screen 的使用

1,安装

1)一般的linux系统都会自带screen,如果没有安装的话,使用

yum -y install screen

2)语法
$> screen [-AmRvx -ls -wipe][-d <作业名称>][-h <行数>][-r <作业名称>][-s ][-S <作业名称>]

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

2,新建窗口

新建一个窗口有3种方法:

screen 这样就可以新建窗口,进入到一个窗口中,但是这样窗口就没有名字,无法区分他们

screen -S name 这样新建一个名字为name的窗口,并入到该窗口中

例如:screen -S count 新建了一个叫count的窗口并进入,可以开始执行命令

例如:screen python ./a.py 新建并执行a.py程序

3,会话分离

我们在一个窗口运行某个程序之后,想退出登录关闭screen进入的窗口干点别的事,让程序在后台运行。这时就需要和窗口会话分离,有2种方式:

1)快捷键Ctrl a表示进入命令模式

在当前会话窗口中按Ctrl a +d快捷键可以实现分离,这时窗口会弹出[detached]的提示,并回到主窗口。

2)screen -d name #远程detach某个session,前提是已经跳出了name窗口

这样妈妈再也不用担心我们关掉terminal程序就不运行了。

4,恢复会话窗口

首先查看有哪些窗口正在运行

screen -ls #列出窗口列表 显示如下

There are screens on:
1942.cout (Detached)
1848.name (Dead ???)
Remove dead screens with 'screen -wipe'.
2 Sockets in /var/run/screen/S-root.

screen -r 1942 #进入1942线程,恢复count会话窗口 或 screen -r count

这样就能回到count窗口了

5,杀死会话窗口

如果想关掉一个多余的窗口,有3种方法:

1)kill -9 1848 例如在上面的2637,kill -9 1848 即可杀死线程,当然就杀死了窗口

2)使用Ctrl a +k 杀死当前窗口和窗口中运行的程序

3)使用Ctrl a 然后输入quit命令退出Screen会话。需要注意的是,这样退出会杀死所有窗口并退出其中运行的所有程序

6,清除死去的窗口

当窗口被杀死后,再用screen -ls 可以看到该窗口后面的(???dead)字样,说明窗口死了,但是仍在占用空间。这时需要清除窗口

screen -wipe #自动清除死去的窗口

这样的窗明几净了~

三:screen 的其他参数及应用

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

C-a ? -> 显示所有键绑定信息

C-a c -> 创建一个新的运行shell的窗口并切换到该窗口

C-a n -> Next,切换到下一个 window

C-a p -> Previous,切换到前一个 window

C-a 0..9 -> 切换到第 0..9 个 window

Ctrl+a [Space] -> 由视窗0循序切换到视窗9

C-a C-a -> 在两个最近使用的 window 间切换

C-a x -> 锁住当前的 window,需用用户密码解锁

C-a d -> detach,暂时离开当前session,将目前的 screen session (可能含有多个 windows)

丢到后台执行,并会回到还没进 screen 时的状态,此时在 screen session 里,每个 window 内运行的 process

(无论是前台/后台)都在继续执行,即使 logout 也不影响。

C-a z -> 把当前session放到后台执行,用 shell 的 fg 命令则可回去。

C-a w -> 显示所有窗口列表

C-a t -> time,显示当前时间,和系统的 load

C-a k -> kill window,强行关闭当前的 window

C-a [ -> 进入 copy mode,在 copy mode 下可以回滚、搜索、复制就像用使用 vi 一样

C-b Backward,PageUp

C-f Forward,PageDown

H(大写) High,将光标移至左上角

L Low,将光标移至左下角

0 移到行首

$ 行末

w forward one word,以字为单位往前移

b backward one word,以字为单位往后移

Space 第一次按为标记区起点,第二次按为终点

Esc 结束 copy mode

C-a ] -> paste,把刚刚在 copy mode 选定的内容贴上

screen 高级应用

会话共享

还有一种比较好玩的会话恢复,可以实现会话共享。假设你在和朋友在不同地点以相同用户登录一台机器,然后你创建一个screen会话,你朋友可以在他的终端上命令:

[root@TS-DEV ~]# screen -x 这个命令会将你朋友的终端Attach到你的Screen会话上,并且你的终端不会被Detach。这样你就可以和朋友共享同一个会话了,如果你们当前又 处于同一个窗口,那就相当于坐在同一个显示器前面,你的操作会同步演示给你朋友,你朋友的操作也会同步演示给你。当然,如果你们切换到这个会话的不同窗口 中去,那还是可以分别进行不同的操作的。

会话锁定与解锁

Screen允许使用快捷键C-a s锁定会话。锁定以后,再进行任何输入屏幕都不会再有反应了。但是要注意虽然屏幕上看不到反应,但你的输入都会被Screen中的进程接收到。快捷键C-a q可以解锁一个会话。

也可以使用C-a x锁定会话,不同的是这样锁定之后,会话会被Screen所属用户的密码保护,需要输入密码才能继续访问这个会话。

发送命令到screen会话

在Screen会话之外,可以通过screen命令操作一个Screen会话,这也为使用Screen作为脚本程序增加了便利。关于Screen在脚本中的应用超出了入门的范围,这里只看一个例子,体会一下在会话之外对Screen的操作:

[root@TS-DEV ~]# screen -S sandy -X screen ping www.baidu.com 这个命令在一个叫做sandy的screen会话中创建一个新窗口,并在其中运行ping命令。

感谢你的阅读,相信你对"如何用screen后台运行程序"这一问题有一定的了解,快去动手实践吧,如果想了解更多相关知识点,可以关注网站!小编会继续为大家带来更好的文章!

运行 命令 作业 程序 后台 切换 朋友 用户 登录 不同 输入 任务 快捷键 终端 视窗 密码 内容 服务器 线程 立新 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 网络认识 维护网络安全 宪法中关于网络安全的 论文中的数据库表怎么表示 软件开发平台有哪些 kodi安装国内服务器 计算机网络技术是不是网络工程 数据库补码 服务器安全审计怎么打开 服务器停止运行提示 数据库怎么保存两位小数 网络安全活动属于理想信念教育吗 3月网络安全 现需软件开发人才 部署网络安全工作已经 网络运维和网络安全能同时进行吗 校园网络安全主题班会的意义 ct数据库com psv 代理服务器 浙江大数据软件开发哪家便宜 软件开发项目决算 笔记本怎么改装成服务器 广州办公系统软件开发哪家便宜 网络安全具体要求有哪些 计算机三级考试数据库技术 书目数据库是存储某个学科领域 奇迹暖暖老玩家登哪个服务器 北京德惠众合软件开发 共筑网络安全守护美好家园讲稿 我想入山东恒大地产数据库 公安部网络安全保卫局局长许
0