screen命令

真的是逼上梁山,学screen命令n次了,就是记不住,为什么,因为没有足够的需求,每次都感觉没事,可以有别的命令能代替。终于还是坑了自己一把。公司执行一条sql,alert语句,修改表结构!几百万条数据,远程执行,不知道数据量,差点以为进程假死。又怕远程断线,无奈,下次要长记性。

安装screen

检查系统时候带有次命令

[root@localhost ~]# screen -v
Screen version 4.01.00devel (GNU) 2-May-06

centos

yum install screen -y

debian

apt-get -y install screen

启动一个 screen 会话

可以在命令行中输入 screen 来启动它,接着会有一个看上去和命令行提示符一样的 screen 会话启动。

screen  # 自动开启的命令

使用描述性名称启动屏幕会话是一个很好的做法,这样你可以轻松地记住会话中正在运行的进程。要使用会话名称创建新会话,请运行以下命令:

screen -S name  # name为自定义的名字

将 "name" 替换为对你会话有意义的名字。

从 screen 会话中分离

要从当前的 screen 会话中分离,你可以按下 Ctrl-A 和 d。所有的 screen 会话仍将是活跃的,你之后可以随时重新连接。

PS: 还要一种笨方法,直接断开ssh连接,再重新连就会看见这个任务了!😛

重新连接到 screen 会话

如果你从一个会话分离,或者由于某些原因你的连接被中断了,你可以使用下面的命令重新连接:

[root@localhost ~]# screen -r
There are several suitable screens on:
        117379.mysql    (Detached)
        117312.pts-0.localhost  (Detached)
        117256.pts-0.localhost  (Attached)
Type "screen [-d] -r [pid.]tty.host" to resume one of them.

需要指定pid来进入会话

如果你有多个 screen 会话,你可以用 ls 参数列出它们。

[root@localhost ~]# screen -ls
There are screens on:
        117379.mysql    (Detached)
        117312.pts-0.localhost  (Detached)
        117256.pts-0.localhost  (Attached)
3 Sockets in /var/run/screen/S-root.

重新连接

  1. 指定pid
[root@localhost ~]# screen -r 117312
  1. 指定别名
[root@localhost ~]# screen -r mysql
  1. 快捷方式(当只有一个后台时)
[root@localhost ~]# screen -x
  1. 问题

当有时不确定,在一个screen里再screen,就会出现多个Attached,再次连接其中一个screen时报错
重新attach失败:There is no screen to be resumed matching
这时可以使用

[root@localhost ~]# screen -d 117312  # 这里的117312是无法进入的screen 的pid

然后就可以再次进入,使用screen -r 117312重新进入

当不清楚所在环境时,将所有会话都变为Detached模式(screen -d pid),可以有利于分清所在环境

判断当前窗口

(Detached)表示此窗口在后台运行
(Attached)表示你当前在此窗口,当你不确定你是在screen里时,可以这么判断

在我们的例子中,我们有三个活跃的 screen 会话。因此,如果你想要还原 “session2” 会话,你可以执行:

screen -r 115276

也可以指定名字

screen -r -S mysql  # 可以不用-S参数
screen -r mysql  # 亲测有效

当只有一个screen会话窗口在后台时,可以用快捷命令:

screen -x

中止 screen 会话

有几种方法来中止 screen 会话。你可以按下 Ctrl+d,或者在命令行中使用 exit 命令。

PS:ctrl + d 这个可以在很多命令行使用,退出mysql,退出当前用户,退出python环境#不用使用exit()#

要查看 screen 命令所有有用的功能,你可以查看 screen 的 man 手册。

posted @ 2018-11-20 23:55  陈浩然201  阅读(1042)  评论(0编辑  收藏  举报