
会话恢复: 只要Screen本身没有终止,在其内部运行的会话都可以恢复。
多窗口:在Screen环境下, 所有的会话都独立的运行,并拥有各自的编号、输入、输出和窗口缓存。
会话共享:Screen可以让一个或多个用户从不同终端多次登录一个会话,并共享会话的所有特性。
安装screen:
# CentOS
yum install screen
# Debian/Ubuntu
apt install screen
Attached :表示当前screen正在作为主终端使用,为活跃状态。
Detached :表示当前screen正在后台使用,为非激发状态。
# 查看已存在终端
screen -ls
# 创建一个叫Hello的虚拟终端
screen -S Hello
# 进入虚拟终端32307
screen -r 32307
There is no screen to be resumed matching错误解决办法
1.在使用screen -r ******(id)重新连接程序界面时出现以下问题:
后来发现是因为突然断网,虽然重新连接,但之前的screen还是处于打开状态(1个screen无法同时打开2次),所以无法重新打开screen,解决方法如下:
2.首先使用screen -d *****(id),先退出,然后再使用 screen -r *****(id)重新连接
这时候关掉ssh会话就不会停止运行了。 如果还需要再这个窗口做其他事情: 1)快捷键Ctrl a表示进入命令模式 在当前会话窗口中按Ctrl a +d快捷键可以实现分离,这时窗口会d出[detached]的提示,并回到主窗口。 2)screen -d name #远程detach某个session,前提是已经跳出了name窗口 首先查看有哪些窗口正在运行 There is a screen on: 2637.count (12/17/2015/10:00:32 AM) (Detached) 这样就能回到count窗口了 如果想关掉一个多余的窗口,有3种方法: 使用Ctrl a +k 杀死当前窗口和窗口中运行的程序 使用Ctrl a 然后输入quit命令退出Screen会话。需要注意的是,这样退出会杀死所有窗口并退出其中运行的所有程序 当窗口被杀死后,再用screen -ls 可以看到该窗口后面的(???dead)字样,说明窗口死了,但是仍在占用空间。这时需要清除窗口留此备查。 screen命令类似于“虚拟桌面”的概念,可以启动一个Linux下的虚拟桌面,在其中可以和普通终端一样执行各种命令。 如果系统中没有screen命令,可以用 apt install screen 来进行安装。 screen命令的基本用法有:screen 启动一个虚拟桌面 在启动后的虚拟桌面中,按Ctrl+a 然后d(注意这个过程中Ctrl一直按住,也就相当于Ctrl+a 然后Ctrl+d),可以从虚拟桌面返回之前的终端,此时如果虚拟桌面中还有命令或进程在执行,将继续执行,即使退出了这个终端也仍将继续执行。这样就实现了后台执行命令或服务。 如果再想要查看这个虚拟桌面中的情况,执行screen -r即可。 如果有多个screen虚拟桌面在执行中,可以用screen -ls列出所有的桌面,然后按照桌面开始的序号(例如是1234),执行screen -r 1234或screen -x 1234就可以进入该桌面查看,然后再用Ctrl+a,d命令组合退出桌面。 如果要真正退出虚拟桌面(结束该桌面及其中正在运行的进程),在桌面中用exit命令退出即可。如果要给启动的虚拟桌面起一个名字,可以用类似 screen -S test 这样的命令,这将启动一个名为test的虚拟桌面,以后可以用screen -x test命令来进入查看。如果想要一条命令用screen启动一个后台进程并且退出(保持后台运行,类似于服务进程),可以用类似下面的命令:screen -dmS test top 这将启动一个 名为 test 的虚拟桌面,然后在其中执行top命令,然后退出该桌面。 这样,我们再结合Linux中的启动执行方法,就可以制作自己的服务进程了。下面设置自启动脚本的方法启动仅供参考:方法一:使用crontab方法二:很多时候需要Ubuntu在开机的时候执行一些指定的命令,这里对 *** 作方法进行记录。 在 /etc/init.d/ 中创建自己的开机运行脚本 # 这里的文件名 mystart 可以修改为任何你喜欢的名称,但是必须放在/etc/init.d/目录中 cd /etc/init.d sudo vim /etc/init.d/mystart.sh写入需要执行的命令, #!/bin/bash ### BEGIN INIT INFO # Provides: tuzixini # Required-Start: $local_fs $network # Required-Stop: $local_fs # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: self define auto start # Description: self define auto start ### END INIT INFO # 上面的部分也必须写上,后面放上你需要开机执行的命令,这里是挂载一个硬盘 sudo mount /dev/sdb1 /opt/disk修改脚本文件权限(将命令中的mystart.sh替换成实际的脚本文件名称) sudo chmod 755 /etc/init.d/mystart.sh加入开机启动(将命令中的mystart.sh替换成实际的脚本文件名称) sudo update-rc.d mystart.sh defaults 90 ok,完成,后面系统启动的时候就会自动运行这段命令。下面是另一段参考: 第一步、先建立screen name shell>screen -dmS test 第二步、发送要执行的命令 shell>screen -r test -p 0 -X stuff "top" 第三步、发送一个回车符,让top命令运行起来 shell>screen -r test -p 0 -X stuff $'\n' 参数说明: -r 恢复/进入一个screen -p 0 指定第一个(从0开始)window,一个screen里可以有几个window,这里只需要指定第一个,不然会在某些情况下不生效。 -X 执行一个指定的screen支持的command stuff 是-X的第一个参数,也是screen支持的一个command,意思是粘贴一个string "top" 是粘贴的string 内容 $'\n' 是粘贴一个回车符进去,以此来执行screen里面的top命令欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)