jojo's blog--快乐忧伤都与你同在
为梦想而来,为自由而生。 性情若水,风起水兴,风息水止,故时而激荡,时又清平……
posts - 11,  comments - 30,  trackbacks - 0

大家在起后台服务,或者长时间执行某个脚本的时候。

是不是感觉,交互性很差,

有时,想把结果直接在终端上输出,又怕不小心关闭了终端导致进程退出? (有些sshd服务还会设置连接超时,自动退出终端)

现在用 screen 这个指令可以很好的解决跑后台服务的尴尬。

命令其实超简单的:

直接在终端上输入 screen , 这个时候,服务器端会启一个新的终端,但这个终端,与之前的普通终端不一样,它不隶属于 sshd 进程组,这样,当本地终端关闭后,服务器终端不会被 kill。

当然,优点还不止这么些,在服务器终端里执行任务时,你甚至可以随时地切换到本地终端做些其他事情,然后,要回去时,再恢复到刚才已经打开的服务器终端里,如果刚才的任务没有结束,还可以继续执行任务。

操作步骤:

首先,进入 screen -S sessionname终端。(sessionname是为了分辨你的session)

然后按 ctrl + a ,再按 d 键暂时退出终端。

当要返回时, 先查看刚才的终端进程ID, screen -list

或直接

 screen -r xx (刚才的sessionname)就可以了

当然,当你开了很多个session后,打算关闭几个session,可以进入到session后,exit 一下就可以了.

总的来说, screen是可以完全替代 nohup 的,并且本身提供了较复杂的功能,但是我认为,刚才那些简单的功能足以应付日常运作。

如果对该指令感兴趣的朋友,推荐一篇文章:

http://www.ibm.com/developerworks/cn/linux/l-cn-screen/



补充:

A: secureCRT链接linux服务器时,网络断线了,但是服务器上的tty还没退出,我想重新连接到原来那个tty,可以做到么?

B: 可以啊,你可以安装一个Screen,就可以享受他给你带来的方便了。

A:如何创建一个虚拟shell环境?

B:screen -S MyScr (其中“MyScr”是你为这个虚拟shell环境起的名字,可以自定义)
输入回车之后,你就可以在这个虚拟的shell环境中工作了,你工作的内容都会被一直保留下来。试试吧,在里面敲几个命令,运行几个程序,和平常没有两样吧。

A: 如何退出工作环境呢?

B:如果想要退出要怎么办呢?只要按下Ctrl+A,然后按d,就可以退出刚刚建立的虚拟shell环境了(名字是MyScr)
若干时间后,你又想继续刚才的工作了,只要再敲:
screen -r MyScr
就可以看到刚刚的界面了。怎么样,还是很简单适用的吧,呵呵。

A: 可以不给他起名么?

B:当然,你不给这个虚拟shell环境命名也是没问题的,如果只有一个虚拟环境的话,也可以这样用
screen(回车)
工作……退出……
screen -r
继续工作
系统还会默认用PID号码表识screen虚拟的shell环境。
例如,我直接用screen命令建立了一个虚拟环境,退出之后,我想查看虚拟环境的情况:

A:如何察看当前有哪些Screen工作环境呢?

B:screen -list
输出应该是类似下面的:
There is a screen on:
25202.pts-1.firewallX (Detached)
1 Socket in /tmp/screens/S-root.
其中:
“25202”是这个虚拟环境的PID。不信的话,可以ps查看一下,呵呵~
“pts-1”是说你的ssh客户端登录的系统端口号是pts-1
“firewallX”是我这台主机的名字
如果你建立了很多虚拟环境,又没有为他们命名的话,就只能用PID来识别他们了。(记住这个PID号码太烦了吧,还是名字好!)
例如,我现在有两个screen建立的虚拟环境,我输入:
screen -list
输出为:
There are screens on:
25202.pts-1.firewallX (Detached)
25403.pts-1.firewallX (Detached)
2 Sockets in /tmp/screens/S-root.
那么,我如果想进入第二个虚拟环境的话,我可以用什么命令呢?答案如下:
screen -r 25403

A:如何创建新的screen呢?

B:如果我登录进去之后,用ctrl-a c:再创建一个新的虚拟Shell环境,那么这个环境就是在PID为25403的虚拟环境里面的子虚拟环境。

A:如何彻底退出一个screen工作环境呢?

B:Ctrl-D

A:如何在进入工作环境的时候就自动的运行screen呢?
B:可以在~/.bash_profiler里最下面一行添加一句screen

注意事项:关闭secureCRT之前,请先使用 Ctrl-D 退出screen

posted on 2009-06-03 15:15 Blog of JoJo 阅读(267) 评论(0)  编辑  收藏 所属分类: Linux 技术相关每日一记

只有注册用户登录后才能发表评论。


网站导航:
 

<2024年11月>
272829303112
3456789
10111213141516
17181920212223
24252627282930
1234567

常用链接

留言簿(6)

随笔档案

文章分类

文章档案

新闻分类

新闻档案

相册

收藏夹

搜索

  •  

最新评论

阅读排行榜

评论排行榜