注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

笑遍世界@网易博客

明天还会在路上……

 
 
 

日志

 
 
关于我

Stay hungry, stay foolish. 工作用脑,生活用心! 走过山重水复,必然迎来柳暗花明! 受苦的人没有悲观的权利,远征的人没有流泪的资格。 Live each day as if we should die tomorrow.

网易考拉推荐
 
 

screen和nohup简介(Linux中让程序在后台继续运行)  

2011-06-26 21:52:51|  分类: Linux技术 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
在实际工作中,我们ssh等到远程的Linux上,运行一个程序,但是当我们关闭掉我们的连接终端断开ssh后,刚才运行着的程序也会自动被中断结束。当ssh连接断开后,如何让我们的程序继续在后台运行呢?下面介绍我常使用的两个方法。

使用nohup让程序在后台继续运行
常用命令:nohup ./test.sh &            【如果运行成功则默认会将标准输出重定向到当前目录的nohup.out文件中,当然可以自己重定向输出信息】
当需要将nohup后台运行的程序调到前台时,先jobs命令查看后台job编号,用 fg %n命令可以调回到前台运行(n是job的编号)。
PS:单独的&时可以让命令后台运行的,知识如果ssh会话断掉,&的命令也会自动退出。

screen让程序后台执行--一个强大的工具
简单来说,Screen是一个可以在多个进程之间多路复用一个物理终端的窗口管理器。Screen中有会话的概念,用户可以在一个screen会话中创建多个screen窗口,在每一个screen窗口中就像操作一个真实的telnet/SSH连接窗口那样。在screen中创建一个新的窗口有这样几种方式:
1.直接在命令行键入screen命令
[root@localhost ~]# screen
Screen将创建一个执行shell的全屏窗口。你可以执行任意shell程序,就像在ssh窗口中那样。在该窗口中键入exit退出该窗口,如果这是该screen会话的唯一窗口,该screen会话退出,否则screen自动切换到前一个窗口。
2.Screen命令后跟你要执行的程序。
[root@localhost ~]# screen vi test.c
Screen创建一个执行vi test.c的单窗口会话,退出vi将退出该窗口/会话。
3.以上两种方式都创建新的screen会话。我们还可以在一个已有screen会话中创建新的窗口。在当前screen窗口中键入C-a c,即Ctrl键+a键,之后再按下c键,screen 在该会话内生成一个新的窗口并切换到该窗口。
给screen发送命令使用了特殊的键组合C-a(Ctrl+a)。这是因为我们在键盘上键入的信息是直接发送给当前screen窗口,必须用其他方式向screen窗口管理器发出命令,默认情况下,screen接收以C-a开始的命令。这种命令形式在screen中叫做键绑定(key binding),C-a叫做命令字符(command character)。
可以通过C-a ?来查看所有的键绑定,我常用的键绑定有:
C-a ?    显示所有键绑定信息
C-a d    暂时断开screen会话
C-a k    杀掉当前窗口
C-a w    显示所有窗口列表
我的通常的真实使用场景如下:
ssh登录我的Linux服务器,screen ./test.sh 运行一个shell脚本,按键C-a d(先按Ctrl+a 再按d键)暂时断开screen会话;然后干别的事情(比如,散散步/打打乒乓球)去了(可能ssh连接已经被断开)。
过一会儿,回来重新登录,然后
screen -ls  #显示所有的 screen sessions (C-a d后的session为detached状态)
screen -r [keyword]  #找到我想要 screen session 恢复回来 (捡回来)
若 screen -ls  有 Attached sessions, 如果想要使用它,可以这样来做
screen -d [keyword]  #强制 detach,以便用screen -r 「接手」过来
PS: screen功能很强大的,我通常也就使用了上面的基本功能。更多的,请看参考资料或者man screen

参考资料:
http://www.21andy.com/blog/20071121/677.html
http://www.ibm.com/developerworks/cn/linux/l-cn-screen/
http://blogold.chinaunix.net/u1/37553/showart_341863.html
  评论这张
 
阅读(3072)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017