Linux下screen命令使用教程

Stella981
• 阅读 528

Linux下screen命令使用教程技术

maybe yes 发表于2015-07-16 00:30

原文链接 : http://blog.lmlphp.com/archives/130/The_tutorial_of_Linux_command_screen_and_how_to_use  来自 : LMLPHP后院

Linux 下的 screen 命令能够方便的管理桌面会话,每个会话可以包含多个屏幕。使用 screen 可以快捷的保存工作环境,比如有的任务需要执行很长时间,或者网络不稳定的情况下保存桌面环境,下次使用 SSH 登录的时候可以直接进入某个会话,直接提升工作效率。

一开始,想到使用 screen,主要是有些进程需要执行很长时间,如果连接突然断开,或者网络不稳定的情况下会话退出了,进程就会被终止。使用 screen 可以很好的解决这个问题,使得进程可以常驻后台运行。本人使用的是 Ubuntu 系统,相信其他系统也差不多一样。在 Ubuntu 下安装非常方便,直接 $ apt-get install screen 就可以搞定。

网上的一些关于 screen 的教程,都不是很清晰,特别是对这个不懂的人,估计看了还是不会玩,下面以通俗的语言来玩玩 screen 命令。

启用 screen,同时开启一个 screen 会话

$ screen

// 执行上面的命令后出现如下全屏界面

Screen version 4.00.03jw4 (FAU) 2-May-06

Copyright (c) 1993-2002 Juergen Weigert, Michael Schroeder Copyright (c) 1987 Oliver Laumann

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program (see the file COPYING); if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.

Send bugreports, fixes, enhancements, t-shirts, money, beer & pizza to screen@uni-erlangen.de

To use byobu (formerly screen-profiles), exit screen and run 'byobu'.

                            \[Press Space or Return to end.\]

接着按下回车或者空白就可以,这样系统就会接受 screen 的一些快捷键命令,如按下 ctrl + a 组合键后,然后按下 n ,屏幕左下角会提示 No other window.。

查看有哪些 screen 会话,使用 screen -ls,如下示例。

root@may:~# screen -ls There are screens on: 15985.pts-2.may (07/15/2015 12:32:44 PM) (Attached) 6293.pts-6.may (07/14/2015 06:13:38 AM) (Detached) 11402.pts-0.may (06/23/2015 05:46:22 AM) (Detached) 3 Sockets in /var/run/screen/S-root.

root@may:~#

上面例子中最上面的一个会话,就是刚刚打开的。创建一个指定名称的会话,可以使用命令 screen -S name。

screen 的状态有两种,Attached 和 Detached,分别表示前台运行和后台运行。使用 screen -r 会话名 可以将 Detached 状态的屏幕会话状态修改为前台运行,并同时切换到这个会话中。如果会话已经是 Attached 状态下,使用命令 screen -r 会话名 是不能切换到那个会话下的,会提示类似于 There is a screen on:15985.pts-2.may (07/15/2015 12:32:44 PM) (Attached) There is no screen to be resumed matching 15985.pts-2.may. 。如果需要切换到状态为 Attached 的会话下,需要先执行 screen -d 会话名 将会话状态修改为 Detached。将当前会话转为后台运行可以使用快捷键 ctrl+a, d 。如下示例:

root@may:~# screen -r 6293.pts-6.may

...

root@may:/srv/www/webchat.lmlphp.com# screen -ls There are screens on: 15985.pts-2.may (07/15/2015 12:32:44 PM) (Attached) 6293.pts-6.may (07/14/2015 06:13:38 AM) (Attached) 11402.pts-0.may (06/23/2015 05:46:22 AM) (Detached) 3 Sockets in /var/run/screen/S-root.

root@may:/srv/www/webchat.lmlphp.com# screen -r 15985.pts-2.may There is a screen on: 15985.pts-2.may (07/15/2015 12:32:44 PM) (Attached) There is no screen to be resumed matching 15985.pts-2.may. root@may:/srv/www/webchat.lmlphp.com#

screen 的控制快捷键是 ctrl+a,所有的命令都是在这个控制信号之后,所以在 screen 模式下,ctrl+a 组合是不会将光标回到命令行的最前面的。相关的快捷键如下:
ctrl-a c:创建一个新的 Shell 窗口
ctrl-a ctrl-a:在 Shell 间切换,或者按住 ctrl 连按两次 a
ctrl-a w 显示所有的 Shell 窗口
ctrl-a n 切换到下一个 Shell
ctrl-a p 切换到上一个 Shell
ctrl-a 0…9 同样是切换各个 Shell
ctrl-a d 将会话转为后台运行

一 般情况下,需要断开连接时,最好将所有的 screen 会话状态全部改为 Detached,这样更安全,更稳定,Attached 状态下容易丢失窗口。如果需要删除某个屏幕会话,可以切换到那个屏幕下,使用 exit 命令,或者在会话下使用 ctrl+a k 会话名,系统会提示是否全部关闭所有窗口。

阅(307)评(0)查看评论

点赞
收藏
评论区
推荐文章
blmius blmius
2年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Jacquelyn38 Jacquelyn38
2年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Wesley13 Wesley13
2年前
Java爬虫之JSoup使用教程
title:Java爬虫之JSoup使用教程date:201812248:00:000800update:201812248:00:000800author:mecover:https://imgblog.csdnimg.cn/20181224144920712(https://www.oschin
Wesley13 Wesley13
2年前
P2P技术揭秘.P2P网络技术原理与典型系统开发
Modular.Java(2009.06)\.Craig.Walls.文字版.pdf:http://www.t00y.com/file/59501950(https://www.oschina.net/action/GoToLink?urlhttp%3A%2F%2Fwww.t00y.com%2Ffile%2F59501950)\More.E
Wesley13 Wesley13
2年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Wesley13 Wesley13
2年前
ES6 新增的数组的方法
给定一个数组letlist\//wu:武力zhi:智力{id:1,name:'张飞',wu:97,zhi:10},{id:2,name:'诸葛亮',wu:55,zhi:99},{id:3,name:'赵云',wu:97,zhi:66},{id:4,na
Easter79 Easter79
2年前
The Complete Guide To Rooting Any Android Phone
PhoneWhitsonGordon(https://www.oschina.net/action/GoToLink?urlhttp%3A%2F%2Fwww.lifehacker.com.au%2Fauthor%2Fwhitsongordon%2F)7April,20118:00AMShare(https://ww
Wesley13 Wesley13
2年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
3个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这