当我们使用securecrt,putty, 等连接远程服务器时,如果正在执行一个程序,比如shell 脚本,退出当前的窗口会导致程序终止!其原理如下:
根据POSIX.1定义:
1 挂断信号(SIGHUP)默认的动作是终止程序。
2 当终端接口检测到网络连接断开,将挂断信号发送给控制进程(会话期首进程)。
3 如果会话期首进程终止,则该信号发送到该会话期前台进程组。
一个进程退出导致一个孤儿进程组中产生时,如果任意一个孤儿进程组进程处于STOP状态,发送SIGHUP和SIGCONT信号到该进程组中所有进程。
 
使用一个例子:securecrt 通过ssh 连接远程服务器
在会话1 执行top命令
在会话2 进行查看top进程ID 为20543 其父进程为12158,即登录shell。
[root@rac3 sh]# ps -ef | grep top
root     20543 12158  0 19:23 pts/1    00:00:00 top
root     20578 12189  0 19:25 pts/2    00:00:00 grep top
 
使用pstree 命令查看上述关系  
[root@rac3 sh]# pstree -H 20543 | grep top
     |-sshd-+-sshd---bash---top
[root@rac3 sh]# ps -xj | grep 20543
Warning: bad syntax, perhaps a bogus '-'? See /usr/share/doc/procps-3.2.7/FAQ
12156 12158 12158 12158 pts/1    20543 Ss       0   0:00 -bash
12158 20543 20543 12158 pts/1    20543 S+       0   0:00 top
12189 20569 20568 12189 pts/2    20568 R+       0   0:00 grep 20543
[root@rac3 sh]# 
由ps -xj 命令查看top 命令和登录的shell -bash同属于一个会话期,shell为会话期首进程,做在进程组为12158 ,top 命令所在的PGID 为20543,为前台进程组!
关闭第一个会话,top命令被kill 掉!
[root@rac3 sh]# ps -ef | grep top  
root     20845 12189  0 19:35 pts/2    00:00:00 grep top
[root@rac3 sh]# 
如何避免SIGHUP信号中断导致当前窗口执行的命令被迫中断,大家会想到nohup,使用如下方法:
nohup command & 
使得command 命令在后台执行。但是对于nohup的用法未免有些简单 ,我们可以使用一个更加强大的命令--screen。
Screen是一个可以在多个进程之间多路复用一个物理终端的窗口管理器。Screen中有会话的概念,用户可以在一个screen会话中创建多个screen窗口,在每一个screen窗口中就像操作一个真实的telnet/SSH连接窗口那样。在screen中创建一个新的窗口有这样几种方式:
查看系统是否安装screen 
[root@rac3 sh]# rpm -qa|grep screen
screen-4.0.3-1.el5
gnome-screensaver-2.16.1-8.el5
如果没有安装则可以使用yum install screen 来安装screen
Screen命令语法:
screen [-AmRvx -ls -wipe][-d <作业名称>][-h <行数>][-r <作业名称>][-s ][-S <作业名称>]
Screen命令参数:
-A -[r|R]          将所有的视窗都调整为目前终端机的大小。
-c filename        用指定的filename文件替代screen的配置文件’.screenrc’.
-d [pid.tty.host]  断开screen进程(使用该命令时,screen的状态一定要是Attached,也就是说有用户连在screen里)。一般进程的名字是以pid.tty.host这种形式表示(用screen -list命令可以看出状态)。
-D [pid.tty.host]  与-d命令实现一样的功能,区别就是如果执行成功,会踢掉原来在screen里的用户并让他logout。
-h <行数>         指定视窗的缓冲区行数。
-ls或–list         显示目前所有的screen作业。
-m                 即使目前已在作业中的screen作业,仍强制建立新的screen作业。
-p number or name  预先选择一个窗口。
-r [pid.tty.host]  恢复离线的screen进程,如果有多个断开的进程,需要指定[pid.tty.host]
-R                 先试图恢复离线的作业。若找不到离线的作业,即建立新的screen作业。
-s shell           指定建立新视窗时,所要执行的shell。
-S <作业名称>      指定screen作业的名称。(用来替代[pid.tty.host]的命名方式,可以简化操作).
-v                 显示版本信息。
-wipe              检查目前所有的screen作业,并删除已经无法使用的screen作业。
-x                 恢复之前离线的screen作业。
进入screen的具体的方法:
1 直接输入 screen 命令,会进入由screen创建的全新的窗口。
[root@rac3 ~]# screen 
Screen将创建一个执行shell的全屏窗口。你可以执行任意shell程序,就像在ssh窗口中那样。在该窗口中键入exit退出该窗口,如果这是该screen会话的唯一窗口,该screen会话退出,否则screen自动切换到前一个窗口。
 
2 screen 后面直接跟 要执行的命令:
[root@rac3 ~]# screen  vi hivedb.sh 
 
之后使用ctrl+a d 命令中断当前的screen会话,但是当你再次进入的时候,依然是退出时候的状态!
  
参考文档:
http://www.ibm.com/developerworks/cn/linux/l-cn-screen/
 
原文链接:http://blog.itpub.net/22664653/viewspace-716291/

[转]screen 的使用的更多相关文章

  1. 断电不断网——Linux的screen

    title: 断电不断网--Linux的screen author:青南 date: 2015-01-01 20:20:23 categories: [Linux] tags: [linux,scre ...

  2. screen命令

    基本用法 screen -S testname 在这里面执行命令,即使终端突出,进程也不会断掉 screen -list查看有哪些screen screen -r testname 恢复

  3. SSH远程会话管理工具 - screen使用教程

    一.screen命令是什么? Screen是一个可以在多个进程之间多路复用一个物理终端的全屏窗口管理器.Screen中有会话的概念,用户可以在一个screen会话中创建多个screen窗口,在每一个s ...

  4. screen:多重视窗管理程序

    screen:多重视窗管理程序 screen [-S SCREEN_NAME]: 创建窗口,可指定窗口名称,如果不指定,则是ID.$HOSTNAME screen -ls: 列出所有的screen窗口 ...

  5. [LeetCode] Sentence Screen Fitting 调整屏幕上的句子

    Given a rows x cols screen and a sentence represented by a list of words, find how many times the gi ...

  6. 关于媒体查询 @Media Screen 与响应式

    其实CSS2中已经有了媒体查询的概念,但是CSS3中媒体查询功能更加的强大! 首先,我们来看一个小例子 设置媒体查询的 Max Width ,改变窗口大小到600px的时候就会触发一下代码: @med ...

  7. 利用@media screen实现网页布局的自适应

    利用@media screen实现网页布局的自适应 优点:无需插件和手机主题,对移动设备友好,能够适应各种窗口大小.只需在CSS中添加@media screen属性,根据浏览器宽度判断并输出不同的长宽 ...

  8. 了解screen对象的常用视图属性

    前面的话 screen对象基本上只用来表明客户端的能力,其中包括浏览器窗口外部的显示器的信息,如像素高度和宽度等.每个浏览器中的screen对象都包含着各不相同的属性.本文将详细介绍screen对象的 ...

  9. 列表屏幕(List Screen)

    声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...

  10. View and Data API Tips: how to make viewer full screen

    By Daniel Du If you have not heard of View and Data API, here is the idea, the View & Data API e ...

随机推荐

  1. 小甲鱼PE详解之资源(PE详解11)

    原文出自:www.fishc.com 最近一直在安排第一届鱼C 学习班的事情,忙活了好一阵子,真是对不住大家,还大家久等了,这里要跟大家说声不好意思 ^_^ 今天我们来谈谈资源部分,资源部分可以说是 ...

  2. linux多线程学习笔记六--一次性初始化和线程私有数据【转】

    转自:http://blog.csdn.net/kkxgx/article/details/7513278 版权声明:本文为博主原创文章,未经博主允许不得转载. 一,一次性初始化 以保证线程在调用资源 ...

  3. power key 啟動系統的相關電路

    Platform Qualcomm MSM8917 / 37 + PM8937(main PMIC) + PMI8940 Schematic Principles 當 power key 按下時, K ...

  4. Day 30 process&thread_2

    进程和线程_2 1.继承类创建线程 import threading,time class Mythread(threading.Thread): #建立类,继承threading.Thread de ...

  5. 关于SSO和跨域

    http://blog.csdn.net/clh604/article/details/20365967/

  6. 牛客网 牛客小白月赛1 E.圆与三角形-公式题

    E.圆与三角形   链接:https://www.nowcoder.com/acm/contest/85/E来源:牛客网     这个题把公式推一下, 发现就是1+sinA*r,sinA最大为1,所以 ...

  7. Codeforces 903F Clear The Matrix(状态压缩DP)

    题目链接 Clear The Matrix 题意 给定一个$4 * n$的矩形,里面的元素为$'.'$或$'*'$.现在有$4$种正方形可以覆盖掉$'*'$,正方形的边长分别为$1,2,3,4$. 求 ...

  8. 【BZOJ1562】【jzyzOJ1730】【COGS409】NOI2009变换序列 二分图匹配

    [问题描述]        对于N个整数0, 1, ……, N-1,一个变换序列T可以将i变成Ti,其中 定义x和y之间的距离.给定每个i和Ti之间的距离D(i,Ti), 你需要求出一个满足要求的变换 ...

  9. selinue引起的ssh连接错误

    在客户端执行ssh依然报错: Permission denied (publickey,gssapi-keyex,gssapi-with-mic). 在这个页面不小心看到了原因: http://ser ...

  10. python tkinter GUI绘制,以及点击更新显示图片

    tkinter 绘制GUI简单明了,制作一些简单的GUI足够,目前遇到的一个问题是不能同时排列显示多幅图片(目前没找到同时显示解决方法), 退而求其次,改成增加一个update按钮,每次点下按钮自动更 ...