首页 > 技术分享 > Other
收藏

Linux中screen使用方法,SSH连接服务器中断后继续执行命令的方法

02/21 15:37
大潇博客 原创文章,转载请标明出处

远程连接服务器最蛋疼的事,莫过于执行了很长时间的命令,因为ssh连接莫名的断开而停止,这种情况简直是灾难性的。


还好Linux提供了screen命令,来应对解决这种情况。


Screen被称之为一个全屏窗口管理器,用他可以轻松在一个物理终端上获得多个虚拟终端的效果。


简单来说,Screen是一个可以在多个进程之间多路复用一个物理终端的窗口管理器,这意味着你能够使用一个单一的终端窗口运行多终端的应用。Screen中有会话的概念,用户可以在一个screen会话中创建多个screen窗口,在每一个screen窗口中就像操作一个真实的telnet/SSH连接窗口那样。


使用方法如下:


首先运行screen,开启一个终端:

screen -S 自定义的终端名  #例如 screen -S lnmp_process


在要执行的命令前,加上screen命令,比如使用make进行编译时:

screen make

这个时候如果ssh终端断开了连接,命令也不会停止执行。


再次打开ssh连接时,通过以下命令查看正在后台运行的终端:

screen -ls


通过“screen -ls”得到包含进程pid的终端列表,可使用kill pid结束某个screen终端

查看screen进程.png


登录某一个在后台运行的screen终端:

screen -r  终端名  #比如上图中可以用:screen -r 4425


如果运行时提示“screen is terminating”,执行如下2条命令尝试解决:

chmod u+s /usr/bin/screen  #此命令表示给某个程式的所有者以suid许可权,可以像root使用者一样操作

chmod 755 /var/run/screen


screen有两种状态,Attached 和 Detached,分别表示前台运行和后台运行

当使用“screen -ls”查看终端列表时,会看到大部分是Detached,表示正在后台运行,个别Attached的状态,使用“screen -r 终端名称”会遇到无法恢复前台显示的情况


Attached表示有用户在登陆这个会话。 如当前没有用户登陆这个会话,会话状态会应显示为Detached。


如果要登陆的会话也显示Attached,可以通过增加 -D 参数强制踢掉前一用户,命令:

screen -D  -r session-id


比如上面图片中gcc的session_id为4425,命令是:

screen -D -r 4425


恢复终端时提示“Attaching from inside of screen”,使用screen -d session-name,比如上面图片中:

screen -D gcc


注意:

1、用远程工具通过ssh连接时,比如终端已经在某个连接中打开,在另一个连接中使用kill session-id命令关闭此终端,那么已连接的窗口将自动退出;

2、在某个连接中开启一个screen终端,在linux服务器自身恢复此终端,然后再去任意ssh连接中通过screen -ls查看此终端状态,均为Attaching,可以在ssh连接中通过screen -D -r session-id恢复终端窗口,此时Linux服务器自身将退出终端,显示登录窗口;

linux登录.jpg



打赏

阅读排行

大家都在搜

博客维护不易,感谢你的肯定
扫码打赏,建议金额1-10元
  • 15601023311