开源软件之screen的第一次使用

来源:互联网 发布:淘宝商城分销平台 编辑:程序博客网 时间:2024/05/02 04:15
在网上看到一篇关于linux下屏幕协作的文章,原文如下:


屏幕协作
来自产品工程的高级维护用户 David 打电话说:“为什么我不能在您部署的这些新机器上编译 supercode.c”。
您会问他:“您运行的是什么机器?”
David 答道:“ Posh”。(这个虚够的公司将它的 5 台生产服务器以纪念 Spice Girls 的方式命名)。这下您可以大显身手了,另一台机器由 David 操作:
# su - david
转到 posh:
# ssh posh
到达之后,运行以下代码:
# screen -S foo
然后呼叫 David:
“David,在终端运行命令 # screen -x foo”。
这使您和 David 的会话在 Linux shell 中联接在一起。您可以输入,他也可以输入,但彼此可以看到对方所做的事情。这避免了进入其他层次,而且双方都有相同的控制权。这样做的好处是 David 可以观察到您的故障诊断技巧,并能准确了解如何解决问题。
最后大家都能看到问题所在:David 的编译脚本对一个不在此新服务器上的旧目录进行了硬编码。将它装载后再次编译即可解决问题,然后 David 继续工作。您则可以继续之前的娱乐活动。
关于此技巧需要注意的一点是,双方需要以同一用户登录。screen 命令还可以:实现多个窗口和拆分屏幕。请阅读手册页获取更多相关信息。
对于 screen 会话,我还有最后一个技巧。要从中分离并让它打开,请输入 Ctrl-A D(即按住 Ctrl 键并点击 A 键。然后按 D 键)。
然后通过再次运行 screen -x foo 命令可以重新拼接起来。


转载: http://www.ibm.com/developerworks/cn/linux/l-10sysadtips/index.html 


感觉挺有意思的,于是上网搜了一下screen。下面是下载地址:
下载目录: ftp://ftp.gnu.org/gnu/screen/screen-4.2.1.tar.gz 
其他版本: ftp://ftp.gnu.org/gnu/screen/ 


下载完成之后,ftp到linux的临时目录,解压之后,进入该目录,
安装“三部曲”,过程如下:
[billing_dx@bmcs1 screen-4.2.1]$ ./configure --prefix="/account/work/ymm/usr/local"#指定安装目录this is screen version 4.2.1……Now please check the pathnames in the Makefile and in the userconfiguration section in config.h.Then type 'make' to make screen. Good luck.[billing_dx@bmcs1 screen-4.2.1]$ make#编译CPP="gcc -E -DETCSCREENRC='"/account/work/ymm/usr/local/etc/screenrc"' -DSCREENENCODINGS='"/account/work/ymm/usr/local/share/screen/utf8encodings"'" srcdir=. sh ./osdef.shAWK=gawk CC="gcc -g -O2 -D_GNU_SOURCE" srcdir=. sh ./comm.shAWK=gawk srcdir=. sh ./term.sh……gcc  -o screen screen.o ansi.o fileio.o mark.o misc.o resize.o socket.o search.o tty.o term.o window.o utmp.o loadav.o putenv.o help.o termcap.o input.o attacher.o pty.o process.o display.o comm.o kmapdef.o acls.o braille.o braille_tsi.o logfile.o layer.o list_generic.o list_display.o list_window.o sched.o teln.o nethack.o encoding.o canvas.o layout.o viewport.o -lcurses  -lelf -lcrypt[billing_dx@bmcs1 screen-4.2.1]$ make install#安装./etc/mkinstalldirs /account/work/ymm/usr/local/bin /account/work/ymm/usr/local/share/screen/utf8encodings……termcap entry (./terminfo/screencap) should be installed manually.You may also want to install ./etc/etcscreenrc in /account/work/ymm/usr/local/etc/screenrc[billing_dx@bmcs1 screen-4.2.1]$ls /account/work/ymm/usr/local/bin/#查看生成的文件screen  screen-4.2.1




安装上面给出的提示,操作如下:
1、使用用户“billing_dx”登录一个终端,执行“screen -S ymm”
2、使用用户“billing_dx”登录一个终端,执行“screen -x ymm”


这样,两个窗口就连接起来了,进行的任何操作都是同步的。


我上网搜了一下screen命令中的这两个参数的含义:
-S sessionnameWhen creating a new session, this option can be used to specify a meaningful name for the session. This name identifies the session for "screen -list" and "screen -r" actions. It substitutes the default [tty.host] suffix.#-S 创建一个新的session-xAttach to a not detached screen session. (Multi display mode).#-x连接指定的session



上网搜这些东西的时候,还是使用google比较方便,如果只是使用英文的话,效果可能更好了。例如google里搜索:linux screen man 。


本来想查看screen的用法,但是因为找不到手册文件,所以:
[billing_dx@bmcs1 screen-4.2.1]$man screenCannot open the message catalog "man" for locale "utf-8"(NLSPATH="/usr/share/locale/%l/LC_MESSAGES/%N")No manual entry for screen[billing_dx@bmcs1 screen-4.2.1



于是我想到,如果我安装了一个新的软件,而且也想着让别人使用man手册的话,我应该如何去做的问题。


上网搜到,使用“man”命令的时候,我们可以手动的指定到指定的目录查找man手册,这个参数就是“-M”,解释如下:
[billing_dx@bmcs1 screen-4.2.1]$man man-M  path       Specify the list of directories to search for man pages.  Separate the directories with colons.       An empty list is the same as not specifying -M at all.  See SEARCH PATH FOR MANUAL PAGES.



因为安装screen的时候,我们指定了screen的安装目录【./configure --prefix="/account/work/ymm/usr/local"】,所以,最后生成的的可执行文件和相应的说明文档都在该目录下,如下:
[billing_dx@bmcs1 screen-4.2.1]$ls /account/work/ymm/usr/localbin  share[billing_dx@bmcs1 screen-4.2.1]$ls /account/work/ymm/usr/local/share/info  man  screen[billing_dx@bmcs1 screen-4.2.1]$ls /account/work/ymm/usr/local/share/manman1[billing_dx@bmcs1 screen-4.2.1]$




所以,可以手动指定man手册的查询目录,进行查询,如下:
[billing_dx@bmcs1 screen-4.2.1]$man -M /account/work/ymm/usr/local/share/man screenSCREEN(1)                                                            SCREEN(1)NAME       screen - screen manager with VT100/ANSI terminal emulationSYNOPSIS       screen [ -options ] [ cmd [ args ] ]       screen -r [[pid.]tty[.host]]       screen -r sessionowner/[[pid.]tty[.host]]DESCRIPTION……



当然,这种方法应该只是一次性的方法,在《鸟哥的私房菜》中,还有一种一劳永逸的方法:


既然有man page,自然就是因为有一些文件数据,所以才能够以man page读出来啰!那么这些man page的数据 放在哪里呢?不同的distribution通常可能有点差异性,不过,通常是放在/usr/share/man这个目录里头,然而,我们可以透过修改他的man page搜寻路径来改善这个目录的问题!修改/etc/man.config (有的版本为man.conf或manpath.conf)即可啰!至于更多的关于man的讯息你可以使用『 man man 』来查询呦!
转载:  http://linux.vbird.org/linux_basic/0160startlinux.php#manual  


/etc/man.config

这个档案乍看之下好像跟 bash 没相关性,但是对于系统管理员来说, 却也是很重要的一个档案!这的档案的内容『规范了使用 man 的时候, man page 的路径到哪里去寻找!』所以说的简单一点,这个档案规定了下达 man 的时候,该去哪里查看数据的路径设定!

那么什么时候要来修改这个档案呢?如果你是以 tarball 的方式来安装你的数据,那么你的 man page 可能会放置在 /usr/local/softpackage/man 里头,那个 softpackage 是你的套件名称, 这个时候你就得以手动的方式将该路径加到 /etc/man.config 里头,否则使用 man 的时候就会找不到相关的说明档啰。

事实上,这个档案内最重要的其实是 MANPATH 这个变量设定啦! 我们搜寻 man page 时,会依据 MANPATH 的路径去分别搜寻啊!另外,要注意的是, 这个档案在各大不同版本 Linux distributions 中,檔名都不太相同,例如 CentOS 用的是 /etc/man.config ,而 SuSE 用的则是 /etc/manpath.config , 可以利用 [tab] 按键来进行文件名的补齐啦!


转载: http://linux.vbird.org/linux_basic/0320bash.php#man  




因为通过上面方法需要修改“ /etc/man.config ”文件,这就牵扯到了有没有这个权限的问题了。
[billing_dx@bmcs1 screen-4.2.1]$ll  /etc/man.config-rw-r--r--. 1 root root 4940 Apr  3  2012 /etc/man.config[billing_dx@bmcs1 screen-4.2.1]$



没有root权限,也就没法进行修改了。不过我感觉,对于我来说,使用“-M”参数,就足够使用到了。


追加:刚才发现,如果我吧man手册所在的目录,添加到PATH环境变量中,还是可以达到直接查询man手册的目的,测试效果如下:
[billing_dx@bmcs1 screen-4.2.1]$man screenCannot open the message catalog "man" for locale "utf-8"(NLSPATH="/usr/share/locale/%l/LC_MESSAGES/%N")No manual entry for screen[billing_dx@bmcs1 screen-4.2.1]$ export PATH=$PATH:/account/work/ymm/usr/local/share/man[billing_dx@bmcs1 screen-4.2.1]$man screenSCREEN(1)                                                            SCREEN(1)NAME       screen - screen manager with VT100/ANSI terminal emulationSYNOPSIS       screen [ -options ] [ cmd [ args ] ]       screen -r [[pid.]tty[.host]]       screen -r sessionowner/[[pid.]tty[.host]]DESCRIPTION



不过这种把什么东西都添加到环境变量PATH的方式,我想着应该不是太推荐吧。不过,这总归也算是一种方法吧!


如果大家有更好的方法,欢迎指导啊!



0 0
原创粉丝点击