前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >screen后台执行命令

screen后台执行命令

作者头像
胡齐
发布2019-11-12 18:08:45
2.7K0
发布2019-11-12 18:08:45
举报
文章被收录于专栏:运维猫

1、背景

系统管理员经常需要SSH 或者telent 远程登录到Linux 服务器,经常运行一些需要很长时间才能完成的任务,比如系统备份、ftp 传输等等。通常情况下我们都是为每一个这样的任务开一个远程终端窗口,因为它们执行的时间太长了。必须等待它们执行完毕,在此期间不能关掉窗口或者断开连接,否则这个任务就会被杀掉,一切半途而废了。

2、简介

GNU Screen是一款由GNU计划开发的用于命令行终端切换的自由软件。用户可以通过该软件同时连接多个本地或远程的命令行会话,并在其间自由切换。

GNU Screen可以看作是窗口管理器的命令行界面版本。它提供了统一的管理多个会话的界面和相应的功能。

1.会话恢复

2.多窗口

3.会话共享

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

3、语法

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

4、常用screen参数

代码语言:javascript
复制
 screen -Syourname -> 新建一个叫yourname的session
 screen -ls -> 列出当前所有的session
 screen -r yourname -> 回到yourname这个session
 screen -d yourname -> 远程detach某个session
 screen -d -r yourname -> 结束当前session并回到yourname这个session

5、使用 screen

5.1安装screen

Linux发行版(例如Red Hat Enterprise Linux)通常会自带screen实用程序,如果没有的话,可以从GNU screen的官方网站下载。

代码语言:javascript
复制
 [root@docker-01 ~]# yum install screen

5.2创建一个新的窗口

安装完成后,直接敲命令screen就可以启动它。但是这样启动的screen会话没有名字,实践上推荐为每个screen会话取一个名字,方便分辨:

代码语言:javascript
复制
 [root@docker-01 ~]# screen -S david 

screen启动后,会创建第一个窗口,也就是窗口No. 0,并在其中打开一个系统默认的shell,一般都会是bash。所以你敲入命令screen之后,会立刻又返回到命令提示符,仿佛什么也没有发生似的,其实你已经进入Screen的世界了。当然,也可以在screen命令之后加入你喜欢的参数,使之直接打开你指定的程序,例如:

screen创建一个执行vi david.txt的单窗口会话。

代码语言:javascript
复制
 [root@docker-01 ~]# screen vim david.txt

在screen当前窗口键入快捷键Ctrl+a+d

5.3重新连接会话

过了一段时间,你想继续操作之前的命令,做如下操作即可:

找到该screen会话:

代码语言:javascript
复制
 [root@docker-01 ~]# screen -ls
 There is a screen on:
        19005.david     (Attached)
 1Socket in/var/run/screen/S-root.

重新连接会话:

代码语言:javascript
复制
 [root@docker-01 ~]# screen -r 19005

5.4退出会话:

如果你的备份命令执行完了,不想再使用screen会话了,可以使用exit命令退出会话。

代码语言:javascript
复制
 [root@docker-01 ~]# exit
 [root@docker-01 ~]# screen -ls
 No Sockets found in/var/run/screen/S-root.
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-11-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 运维猫 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、背景
  • 2、简介
  • 3、语法
  • 4、常用screen参数
  • 5、使用 screen
    • 5.1安装screen
      • 5.2创建一个新的窗口
        • 5.3重新连接会话
          • 5.4退出会话:
          相关产品与服务
          容器服务
          腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档