首页 » 软件推荐 » 我喜爱的软件2 — screen

我喜爱的软件2 — screen

linux下有很多优秀的软件, screen就是其中一款. 它可帮助我们在网络情况不好的条件下, 不间断完成一些任务. 在没有screen的很多时候我们在ssh上一台服务器, 当我们在操作一半时网络突然出现问题, 我们很容易就会掉线, 没有完成的操作也会中断. 不但影响了工作的效率还容易出现问题, 比如在部署一台远程的服务器, 如果中断了后果不堪设想:(. 这时候我们就需要强大的screen的帮助了.

一般来说screen适合一下情况的需要:

1. 需要在网络不稳定的条件下, 在远程服务器上执行命令.
2. 工作任务很多的情况下, 需要一个多任务的终端, 方便不同环境的切换. screen是支持多个窗口的.
3. 不是在Window X 下模拟的terminal(或者是也行), 一个没有鼠标的环境, 但是想看之前屏幕缓冲终端日志或输出的时候. 这点在直接点就是: 用键盘快速滚动terminal的屏幕, 并执行选择/复制的操作, 要比用鼠标块很多. 只要C+[就行了
4. 远程协助, 这点我觉得是screen的一大亮点, 在不用vnc和rdp的情况下, 执行远程协助, 速度非常快. 使用时没有附加上更多笨重的数据.一个用户先用screen -r/-S进入一个screen, 另一个用户在通过screen -x进入用一个scoketname. 然后两个人执行一些linux命令, 看看, 很有趣吧.
5. 还可以实现bash中的多进程编程(类似多线程), 是不是很酷呢?

screen的这么多功能执行起来却异常的简单, 而且配置也很简单, 很多功能比如字符的显示特性完全依赖本地的terminal配置, 也就是不用在重复的配置.

screen常用命令:
screen -S NAME 创建一个名为”NAME”的screen进程
screen -r NAME 恢复”NAME”screen进程
screen -ls 查看已经创建的screen进程
screen -x NAME 进入一个Attached状态的screen进程, 也就远程协助
screen -wipe clean up screen 的 socket目录
screen -dmS 在后台执行中的命令, 可以在多进程shell变成中使用.

在screen中的常用命令:
C+a c 创建一个窗口
C+a n/p 访问当前下一个/上一个窗口
C+a [0-9] 直接访问第[0-9]个窗口
C+a A 修改窗口名
C+a d 当前screen进程进入 Detached状态
C+a [ 进入选择模式 C+u是向上滚动, C+d是向下滚动.

还有默认的screen界面比较单调, 在screenrc中加入

Bash语言:
1 ## alternative caption, gives window list, LOGNAME and current date:
2 caption always “%{wk}%?%-Lw%?%{bw}%n*%f %t%?(%u)%?%{wk}%?%+Lw %=%{mk}@%H %{yk}%D %{ck}%M%{wk} %{ck}%d %{gk}%c”
3 hardstatus alwaysignore
4 hardstatus alwayslastline “%Lw”
5 # Red Hat’s normal status line
6 hardstatus string “[screen %n%?: %t%?] %h”
上面大概含义就是在screen中显示一个状态条, 上面显示”title”,”host”,”time” 等等信息.
最后, 有的用户在使用时可能会发现, 为什么我重启电脑后我的之前创建的screen都没有了? 这是sighup问题, 请看” http://www.ibm.com/developerworks/cn/linux/l-cn-screen/” 这边介绍.

发表评论

Fill in your details below or click an icon to log in:

WordPress.com 徽标

You are commenting using your WordPress.com account. Log Out /  更改 )

Google photo

You are commenting using your Google account. Log Out /  更改 )

Twitter picture

You are commenting using your Twitter account. Log Out /  更改 )

Facebook photo

You are commenting using your Facebook account. Log Out /  更改 )

Connecting to %s