linux技巧-使用screen管理你的远程会话

 当咱们用ssh或是telent远程登陆到linux服务器上,运行一些长时间的任务,必须等待任务完成才能离开该界面。在此期间不能关闭窗口或者断开链接。不然这个任务的进程就会别杀掉,一切半途而废,须要从新执行该任务。linux

   如何解决这个问题?shell

     首先来理解几个概念:服务器

      进程组:一个或多个进程的集合,每一个进程组有惟一一个进程组ID,即进程组长进程的ID网络

      会话期:一个或多个进程组的集合,有惟一一个会话期首进程,会话期ID为首进程的IDssh

      会话期能够有一个单独的控制终端,与控制终端链接的会话期首进程叫控制进程,当前与终端交互的进程为前台进程。进程

     挂断信号默认的动做为终止程序登录

    当终端借口检测到网络链接断开,将挂断信号发送给控制进程终端

    若是会话期首选进程终止,则该信号发送到该会话期前台进程组程序

     一个进程退出致使一个孤儿进程组中产生时,若是任意一个孤儿进程组处于stop状态,发送SIGHUP和SIGCONT信号到该进程组的全部进程。command

    所以,当网络断开或终端窗口关闭后,控制进程收到SIGHUP信号退出,会致使该会话期内其余进程退出

    方法一:nohup 

             #nohup  command  &

    方法二:screen

             creen 是一个能够在多个进程间多路复用一个物理终端的窗口管理器。

             使用方法:

                 (1),[xuefeng@ku6]# screen

               screen将建立一个执行shell的全屏窗口,你能够执行任意shell,就像在ssh窗口同样。

                (2),[xuefeng@ku6]#screen vi abc

                 screen建立一个执行vi  abc的单独窗口会话,退出vi 将退出该窗口

                (3),还能够在已有screen会话窗口中建立新的窗口,在当前sceen窗口中键入C-a  c,即Ctrl+a,再按下c键。从新控制各窗口中运行的程序。

                      例如:在一个screen窗口中编辑vi /tmp/abc,以后须要做另外的事情,那么能够在screen窗口键入C-a  d,screen会提示暂时中断会话。继续前一个会话,#screen -ls  查看会话编号。从新链接screen -r   编号。

相关文章
相关标签/搜索