当前位置:首页 > 游戏资讯 > 正文

screenkill(screenkill多重视窗管理程序)

昨天有朋友问,昨天发布的“Linux学习:让进程在后台运行的几种方法”这篇文章中为何没有screen命令的介绍,

今天给大家补上这个,请多多指教。

screen是linux下的一种多重视窗管理程序。使用telnet或SSH远程登录linux时,如果连接非正常中断,重新连接时,系统将开一个新的session,无法恢复原来的session。screen命令可以解决这个问题。

screen工具是一个终端多路转接器,在本质上,这意味着你能够使用一个单一的终端窗口运行多终端的应用。

如下为screen命令的帮助信息。

screenkill(screenkill多重视窗管理程序)  第1张

screen 帮助信息

  • 用来建立一个处于断开模式下的会话(并指定其会话名)。

    screen -dmS session name

  • 用来列出所有会话。

    screen -list

  • 用来重新连接指定会话。

    screen -r session name

  • 用快捷键来暂时断开当前会话。

    CTRL+a+d

示例:

screenkill(screenkill多重视窗管理程序)  第2张

当使用screen -r连接到screen后,我们就可以在里面人已执行程序或命令了,而不用担心SIGHUP信号对我们的进程造成影响了,不用在每个命令前加上"nohup"或者"setsid"了。下面来详细的看下。

1)未使用screen时新进程的进程树,如下图所示

screenkill(screenkill多重视窗管理程序)  第3张

从图上可以看到bash属于sshd的子进程,当ssh断开之后,SIGHUP信号就会发送到它下面的每一个子进程中去。

2)使用了screen后进程的进程树

screenkill(screenkill多重视窗管理程序)  第4张

而使用了screen命令之后,bash是screen的子进程,那么ssh断开时,SIGHUP不用影响screen下面的子进程。

清除screen建立的session,使用kill命令即可

screenkill(screenkill多重视窗管理程序)  第5张

如果由于某种原因,其中某一个对话Dead的话,可以使用screen -wipe来清除该会话。

见下图的示例

screenkill(screenkill多重视窗管理程序)  第6张

觉得不错的话,希望各位多多点赞和评论哦!谢谢各位了。


0