白话screen最佳实战

你应该也遇到过在远程服务器上跑sql脚本或编译某软件时网络异常断开的情况,这时怎么办?重新连上服务器回滚后再执行一次?是不是太low了!screen工具就能优雅的解决这个问题,下面我们假设小明在远程服务器上编译nginx来熟悉下screen的使用方式。

小明拿到服务器后发现没有安装screen,于是他执行了下面命令

yum install screen

安装好screen后直接执行screen命令就能启动一个新会话,但小明没有这样做,因为直接执行screen命令,这个会话是没有名字的,为了区分多个会话,所以要加个大S参数。

screen -S nginx

进入新会话后就可以放心的编译nginx了,小明在nginx源码目录执行 ./configure && make && make install 命令,终端开始快速滚动一行行字符,就像黑客帝国里画面一样,小明端起茶杯嘴角露出幸福的笑容。他旁边工位的大壮要他看下服务器配置,小明放下茶杯,在键盘上按下快捷键用来临时退出会话:

ctrl + a d (同时按ctrl+a再按d)

小明把服务器配置告诉大壮后,需要重新连上会话检查下编译进度,小明执行下面命令查看会话列表,虽然小明知道这是台新服务器,暂时只有他知道账号密码,但作为一个资深运维,他一直保持着一份严谨。

screen -ls

果然只有个nginx会话,小明执行下面命令重新连上nginx会话,终端上还在哗啦啦的输出编译信息。

screen -r nginx

不幸的是这时网络断了,同一排工位DBA胖磊,一脸懵逼看着已断开连接的xhell连说了几个“靠”,小明嘴角又露出了幸福的笑容,他断定胖磊在跑sql时没有用screen。

网络恢复后,小明远程上服务器,在服务器上用screen -ls 看了下nginx会话任然在,只是Detached变为Attached,小明加了个 d 选项强制进入了nginx会话,发现nginx以及编译完成。

screen -rd nginx

小明启动nginx服务,测试nginx服务已经能正常运行,用exit退出了screen的nginx会话,拿起茶杯走到饮水机旁边把水续上,顺便瞄了眼正在回滚数据满头大汗的胖磊。

几天后大壮接手了小明搭建的nginx服务器,但是大壮把一些配置搞错了,导致nginx服务起不来,小明在服务器上执行screen -S nginx命令,然后让大壮连上同一台服务器后执行下面命令。

screen -x nginx

此时神奇的事情发生了,小明在终端上的操作大壮的终端上也同屏显示,大壮心里暗自佩服,对小明做了666的手势。

补充

ctrl+s可以锁定终端,ctrl+q解锁终端

总结

screen -S nginx

screen -r nginx

screen -rd nginx

ctrl+a d

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181217G0OB4M00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券