当前位置: 首页 > 工具软件 > ScreenCat > 使用案例 >

screen用法

龙晟睿
2023-12-01

screen 参数

Attached: 有用户连进去
Detached:没有用户连进去
Dead: 说明该终端不可用

  1. -dmS name Start as daemon: Screen session in detached mode. #开一个screen终端,并离线执行任务,不进到终端,终端的状态为Detached
[root@k8s-master ~]# screen -dmS test  ./screen.sh #开启一个名为test的终端,并执行脚本,该终端的状态为Detached
[root@k8s-master ~]# screen -S test -d -m ./screen.sh #和上面命令一样
[root@k8s-master ~]# screen -ls
There is a screen on:
	38835.test	(Detached)
1 Socket in /var/run/screen/S-root.

当screen为Detached的时候,执行screen -d -r 38835会变成Attached,并且进入到38835的终端

[root@k8s-master ~]# screen -ls
There is a screen on:
	38835.test	(Attached)
1 Socket in /var/run/screen/S-root.
[root@k8s-master ~]# kill -9 38835 ##当为detached或者attached的时候,执行kill -9 pid就会将其变成Dead状态
[root@k8s-master ~]# screen -ls
There is a screen on:
	38835.test	(Dead ???)
Remove dead screens with 'screen -wipe'.
1 Socket in /var/run/screen/S-root.
#这种情况,不能再附接,只能通过screen -wipe清理
[root@k8s-master ~]# 
[root@k8s-master ~]# screen -ls
There are screens on:
	42572.test	(Detached)
	38835.test	(Dead ???)
Remove dead screens with 'screen -wipe'.
2 Sockets in /var/run/screen/S-root.

[root@k8s-master ~]# screen -wipe  #这个命令只能移除Dead,无论多少个Dead,只需执行一个screen -wipe,其他状态还是保留
There are screens on:
	42572.test	(Detached)
	38835.test	(Removed)
1 socket wiped out.
1 Socket in /var/run/screen/S-root.

[root@k8s-master ~]# screen -ls
There is a screen on:
	42572.test	(Detached)
1 Socket in /var/run/screen/S-root.
  1. -S sockname Name this session .sockname instead of ...
    [root@k8s-master ~]# screen -S csren #开启(命名)一个终端,并进去,查看其终端状态为Attached;可重复名字,开启后进程ID不一样
[root@k8s-master ~]# screen -ls
There is a screen on:
	42572.test	(Detached)
1 Socket in /var/run/screen/S-root.

[root@k8s-master ~]# screen -X -S 42572 quit #退出终端(Detached|Attached)
[root@k8s-master ~]# screen -ls
No Sockets found in /var/run/screen/S-root.
[root@k8s-master ~]# screen -X -S test quit  #当名字重复的时候,不能用名字当参数,执行退出,会报错,要用PID
There are several suitable screens on:
	51996.test	(Detached)
	51974.test	(Detached)
Use -S to specify a session.
[root@k8s-master ~]# 
[root@k8s-master ~]# screen -S test ##开启一个名为test的终端,并且进入中断
[root@k8s-master ~]# screen -ls
There are screens on:
        70482.test      (Attached)
        69775.test      (Detached)
2 Sockets in /var/run/screen/S-root.
[root@k8s-master ~]# screen -d 70482 ##将Attached变成Detached
[root@k8s-master ~]#  
[remote detached from 70482.test]
[root@k8s-master ~]# screen -dmS test  ./screen.sh 
[root@k8s-master ~]# screen -ls
There is a screen on:
	93882.test	(Detached)
1 Socket in /var/run/screen/S-root.

[root@k8s-master ~]# screen -r 93882 ##将detached变为Attached,并且进终端

删除终端(Attached|Detached|Dead)

[root@k8s-master ~]#  screen -S expandcee -d -m ./screen2.sh 
[root@k8s-master ~]#  screen -S expandcee -d -m ./screen2.sh 
[root@k8s-master ~]#  screen -S expandcee -d -m ./screen2.sh 
[root@k8s-master ~]# screen -ls
There are screens on:
	15955.expandcee	(Detached)
	15935.expandcee	(Detached)
	15919.expandcee	(Detached)
3 Sockets in /var/run/screen/S-root.

[root@k8s-master ~]# kill -9 15919
[root@k8s-master ~]# screen -ls
There are screens on:
	15955.expandcee	(Detached)
	15935.expandcee	(Detached)
	15919.expandcee	(Dead ???)
Remove dead screens with 'screen -wipe'.
3 Sockets in /var/run/screen/S-root.

[root@k8s-master ~]# bash  screen_delete.sh 
There is a screen on:
	15919.expandcee	(Removed)
1 socket wiped out.
No Sockets found in /var/run/screen/S-root.

[root@k8s-master ~]# screen -ls
No Sockets found in /var/run/screen/S-root.

####screen_delete.sh###
[root@k8s-master ~]# cat screen_delete.sh 
#! /bin/sh
PID=`screen -ls | awk -F "." '/Attached|Detached/{print $1}' | tr -d '\t'`
if [ -n "$PID" ]
then
    for i in $PID
    do
        screen -X -S $i quit
    done
fi

PID_D=`screen -ls | awk -F "." '/Dead/{print $1}' | tr -d '\t'`
if [ -n "$PID_D" ]
then
    screen -wipe
    exit 1
fi

共享服务器:
当A和B同时登录一台服务器时,A要操作给B看
A先在服务器执行screen -S test 就会进入一个终端,在里面操作自己的东西;B要想实时同步看A操作的内容,只需输入screen -x test.
这样A无论操作什么,B看到的东西都是和A一样的。

[root@k8s-master ~]# screen -S 34121 -X  ping www.baidu.com  ##在sany这个终端上去执行命令
[root@k8s-master ~]# screen -ls
There is a screen on:
	34121.sany	(Attached)
1 Socket in /var/run/screen/S-root.
[root@k8s-master ~]# 
[root@k8s-master ~]# screen -ls
There are screens on:
	37020.ren	(Detached)
	34121.sany	(Attached)
2 Sockets in /var/run/screen/S-root.
[root@k8s-master ~]# screen -S ren -X  ping www.baidu.com #必须在已有的终端上去执行,当终端不存在时会报错
[root@k8s-master ~]# screen -S ren1 -X  ping www.baidu.com
No screen session found.
[root@k8s-master ~]# 

-x 恢复之前的作业
-X 执行命令
[root@k8s-master ~]# screen -dmS test  ./screen.sh 
[root@k8s-master ~]# screen -ls
There is a screen on:
	42047.test	(Detached)
1 Socket in /var/run/screen/S-root.

[root@k8s-master ~]# screen -x 42047 -X quit ##也可以终止终端
[root@k8s-master ~]# screen -ls
No Sockets found in /var/run/screen/S-root.

[root@k8s-master ~]# 

 类似资料: