XWindow系统使用指南--第05章启动和关闭退出X
在本章, 我们将学到:.如何在自己的机器上启动X.
.如何在视窗上做一些基本操作.
.如何关闭退出X.
我们在此假设你的系统管理者已经在你的系统上装设好了X, 事实上即
使不曾用过或不熟悉X, 装设X也不会很困难. 因此如果你有必要自己装设
X, 本书的附录将给你一些提示.
在还未开始前, 我们需要先知道已装设好的X, 它的执行程式在那里,
MIT 版预设的目录为 /usr/bin/X11,但很多地方是用 /usr/local/bin 或
/usr/local/bin/X11, 当你知道了之後, 把它加到你的搜寻路径 (search
path) 里, 如果你使用 C-Shell, 可以在你的.login档 (或者可能是.cshrc
档) 设定路径, 如果你使用Bourne Shell, 则在.profile档中设定. 例如,
在.login档中使用C-Shell 的命令列设定路径:
set path = (. /usr/local/bin/X11 /usr/ucb /usr/bin /bin)
如果你不设定路径, X将无易做图常启动, 当你设好之後, 为了确定起见,
先logout再login 一次, 检查路径是否设定正确 (用 echo $PATH 指令).
5.1 启动X
在你的显示器启动X,键入命令:
xinit
则会依序发生:
1. 你的整个萤幕会被设定成灰色。
2. 一个巨大的 "X" 游标出现(见图 5 - 1 )
┌————————————————┐
│ p48 fig 5.1 │
│ │
│ │
│ │
│图 5 - 1 大的 "X" 游标 │
└————————————————┘
你可以用滑鼠将它在萤幕上移动,但按滑鼠按钮或键盘都对它无影响。
3. 一个xterm 终端机模拟器的视窗出现在萤幕左上角,当游标移到这个
视窗时,会改变成本文游标,(见图 5 - 2),xterm 准备接受你的
命令。
┌————————————————┐
│ │
│ p48 fig 5.2 │
│ │
│ │
│ │
│图 5 - 2 xterm 的本文游标 │
└————————————————┘
系统启动的画面见图 5 - 3。X现在已被启动,你可以把xterm 这个视
窗当成一个普通的终端机来使用,执行一些普通的指令,不过它最大的价值
在让你可以开始执行其它的X程式,我们将於稍後告诉你,现在先来让你了
解一下X的启始动作做了些什麽。
┌————————————————┐
│ │
│ p49 fig 5.3 │
│ │
│ │
│ │
│图 5 - 3 系统启动的画面 │
└————————————————┘
5.1.1 xinit 的内部操作:
首先, xinit 启动Xserver程式在你的显示器上执行, server建立一个
它自己的根视窗, 并把视窗的背景色设定成灰色, 把游标设定成一个大 "X".
在server执行的期间, server一直控制著键盘及滑鼠, 这就是你能在萤
幕上移动游标的原因, 但是因为目前没有任何client程式要求告知键盘和滑
鼠 "事件",所以server只是追踪滑鼠游标的移动, 而所有其它的键盘或滑鼠
输入虽然都经过server处理但均被放弃, ( 因为没有client程式有兴趣 ),
这就是按键盘或滑鼠按钮没有反应的原因.
接下来, xinit 启动xterm 程式执行, xterm 对server而言是一个client
程式, xterm 要求server建立一个视窗, 而且保持告知在这个视窗中的滑鼠
和键盘事件, xterm 设定在视窗中执行一个shell , 当指标移至视窗之内便
准备接受输入.
键盘输入被送至shell 就如同在一部真的终端机上输入一般, 从shell
( 及其副程式 )的输出藉著xterm 显示在视窗上, xterm 也接受滑鼠输入,
使得你能设定不同的程式操作参数和进行本文的剪贴 (cut and paste ) .
你可以观察到系统执行这些动作的步骤, 例如当在系统启动後, 在xterm
视窗内执行 ps a 命令:
PID TT STAT TIME COMMAND
1900 C0 S 0:00 xinit
1901 C0 S 0:01 X:0
1902 C0 S 0:01 xterm -geometry +1+1 -n login -display unix:0 -c
1903 p1 S 0:00 -sh (csh)
1904 p1 R 0:00 ps
以上的显示说明xinit 在主控台(console )显示器上被启动,它初始化server
,X显示为零。接著xterm 在一个虚拟(pseudo)的终端机上执行,xterm 启
动一个shell 执行,使得它能处理你在xterm 视窗所下的命令。最後,我们执
行ps命令产生上述的列表。
我们将在第8章讨论更多的xterm 细节, 从现在起, 我们假设xterm 被视
为一个DEC VT102 的终端机, 我们把重点转移到系统启动之後, 我们能做些什
麽.
5.2 如何执行一些X程式
你目前有一个X server 控制的显示器,一个叫xterm 的client程式,允
许你输入命令,本节告诉你如何执行其它的X程式。
因为X的client程式和X server 完全独立,所以不需要特别的动作启动
它们,你可以像执行一般的程式一样执行它们。但是这些client程式需要确实
知道它们用的是那一个显示器。实际上因为xterm 一开始设定了DISPLAY 环境
变数,给定了它使用的显示器名称,而其它的client程式用此当作预设显示器
,因此你不需多做其它的事。
5.2.1 如何执行X的时钟,xclock
我们用X的时钟当作一个简单的□例,先确定指标停在xterm 视窗中,然
後输入命令:
xclock
一个小的时钟影像出现在萤幕左上角,覆盖了第一个视窗一部份,如图 5 - 4
┌————————————————┐
│ │
│ p51 fig 5.4 │
│ │
│ │
│ │
│图 5 - 4 xclock 启动後的画面 │
└————————————————┘
现在有三个问题要克服:
第一个问题:由於xterm 这个 "终端机" 已经有一个程式(xclock)在执
行,所以我们无法再输入其它的命令,该怎麽办?
唯一的办法就是停掉xclock,但当你按下ctrl-c或DEL 键时,xclock便会
消失,要克服这种状况,你需要非同步(asynchronously)执行xclock,用命令:
xclock &
则目前xterm 至少能接受你输入其它的命令。
第二个问题:如何中止xclock?
X server 本身没有提供直接的介面中止应用程式,但是有一个叫xkill
的client程式可让你杀掉应用程式,在xterm 视窗内输入xkill 命令便可启动
这个程式,xkill 会显示一个覆盖性的方形游标(draped box cursor ),见
图5-5 ,移动这个游标到任何你想杀掉的应用程式的视窗中,碰触左按钮,应
用程式的视窗会消失且应用程式和xkill 会一起结束,你也会得到如下的讯息:
xkill:killing creator of resource 0x40004d
XIO:fatal IO error 32 (Broken pipe) on X server "unix:0.0"
after 207 requests (178 known processed) with 0 events remain-
ing.
The connection was probably broken by a server shutdown or kill-
client.
┌—————————————————┐
│ │
│ p52 fig 5.5 │
│ │
│ │
│ │
│图 5 - 5 xkill的覆盖性的方形游标 │
└—————————————————┘
如果为了某些缘故你无法进到应用程式的视窗内用xkill 中止它,你通常可以用
UNIX的办法:找出process 的ID,然後杀掉它,例如:
$ps a |