Chinaunix首页 | 论坛 | 博客
  • 博客访问: 18722
  • 博文数量: 1
  • 博客积分: 60
  • 博客等级: 民兵
  • 技术积分: 25
  • 用 户 组: 普通用户
  • 注册时间: 2009-06-27 10:16
文章分类

全部博文(1)

文章存档

2014年(1)

我的朋友
最近访客

分类: LINUX

2014-05-15 16:59:57

(3)范例。在文件services中查找含有ftp的行。
    lark:/etc>grep ftp services
    ftp    21/tcp
    tftp    69/udp
    sftp    115/tcp
    lark:/etc>
    37.gzexe
    (1)简介
    gzexe:将可执行文件压缩成较小的可执行文件(类似于DOS下的PKLITE,LZEXE)。
    (2)部分参数说明
    gzexe[文件名. . . ]
    -d解压缩
   本命令对那些磁盘空间较小的用户特别有用。
    (3)范例
    lark:->ls -la cat
    -rwxr-xr-x   1 fangh   users 20916 Aug25 21:33cat*
    lark:->gzexe cat
    cat:
    lark:->ls-la cat
    -rw xr-xr-x  1 fangh users   11283 Aug 25 21:33 cat*
    lark:->
    38.gzip
    (1)简介
    gzip,gunzip,zcat:压缩或展开文件。
    (2)部分参数说明
    gzip[-acdfhlLnNrtv V19][-S suffix] [文件名 . . .]
    gunzip[-acfhlLnNrtvV][-S suffix][文件名. . .]
    zcat[-fhLV][文件名. . . ]
    -d --decompree --uncompress:解压。
    -h --help:显示帮助信息并退出。
    -t --test:检验压缩文件。
    -V --version:显示版权信息并退出。
    -v:输出压缩信息。
    -# --fast --best:#为1(fast)-9(best)数字越小速度越快,但压缩比越小,缺省为6。
    -c --stdout --to-stdout:压缩结果输出到标准输出,如不加-c参数,则gzip将源文件压缩为.gz文件并删除源文件。
    (3)范例
    lark:->gzip -v sourcefile
    sourcefile:                15.2% --replaced with sourcefile.gz
    lark:->
    39.head
    (1)简介
    head:显示文件的前几行。
   (2)部分参数说明
    head[-c N[bkm]][-n N][-qv][--bytes=N[bkm]][--lines=N]
    [--quiet][--silent][--verbose][--help][--version]
    [文件名. . .]
    head[-N bcklmqv][文件名. . .]
    -c N, --bytes N:输出文件的前N个字节。
    -n N, --lines N:输出文件的前N行。
    -q, --quiet, --silent:不输出文件名的信息。
    -v, --verbose:输出文件名的信息。
    --help:在标准输出上输出帮助信息并退出。
    --version:在标准输出上输出版本信息并退出。
    (3)范例。输出文件.lessrc的第一行。
    lark:->head -n 1 .lessrc
     forw-line
    lark:->
    40.hostid
    (1)简介
    hostid:显示或设置系统的HOSTID。
    作者:Mitch Dsouza.
    (2)部分参数说明
    hostid [-v] [十六进制的ID]
    -v:给出十进制和十六进制的ID。
    对于每一台机器,其HOSTID是唯一的,只有超级用户才能更改。
    (3)范例
    lark:->hostid -v
    Hostid is 650780800 (0×26ca2080)
    lark:->
    41.id
    (1)简介
    id:显示当前用户的用户名和组。
    (2)部分参数说明
    id [-a]
    -a 参数用在支持一用户多组的系统上。
    id在取得用户和user id和group id后从文件/etc/passwd,/etc/group中查出用户的用户名和组名。
    (3)范例
    lark:->  id
    uid=1000(fangh)gid=100(users)group=100(users)
   lark:->
    42.join
    (1)简介
    join:从两个文件中取出相同的行,按照指定的关键字为匹配的两行连接成一行。
    (2)部分参数说明
    join [-a 1|2][-v 1|2][-v empty-string][-o fieldlist. . .]
    [-t char][-j[1|2]field] [-1 field] [-2 field]
    文件1文件2
    join{--help, --version}
    -a file-number:文件1或2中不匹配的行也输出,file-number可以是1或2。
    -e string:用字符串string代替输出的空域。
    -1, -j1 field:在文件1的第field个域连接两个文件。
    -2, -j2 field:在文件2的第field个域连接两个文件。
    -j field:等于是-1 field -2 field。
    -o field-list. . .:按照field-list中的格式构造输出行。
    -t char:用字符char作为输入输出域的分割符。
    -v file-number:为文件file-number的每一个不匹配的行打印一行代替通常的输出。
    --help:在标准输出上输出帮助信息并退出。
    --version:在标准输出上输出版本信息并退出。
    (3)范例
    lark:->join testfile1 testfile2
    this is testfile is testfile
    lark:->
    43.kill
    (1)简介
    kill:中止一个进程
    (2)部分参数说明
    kill [-a信号|-p] [-a]进程号. . .
    kill -l [信号]
    kill向指定的进程发出特定的信号,如果没有指定信号则送出TERM信号,TERM信号将杀死没有捕捉到这个信号的进程。对于某些进程可能要使用KILL(9)信号强制杀死。例如:kill -9 11721。将强制杀死进程11721。大多数SHELL内建kill命令。
    进程号. . :指定要杀死的进程列表,每个进程号可以是一个进程的id或者进程名。
    -s:指定要送出的信号,信号可以由数字给出,也可以是信号名。常用的信号有KILL(不能被进程忽略),HUP。
    -P:只打印进程的ID不送出信号。
    -I:打印所有信号列表(在/usr/include/linux/signal.h中定义)。
    (3)范例。杀掉进程11721:
    lark:->ps
    PID TTY STAT TIME COMMAND
    11668 pl s 0:00 -tcsh
    11721 pl T0:00 cat
    11737 pl R 0:00 cat
    11737 pl R 0:00 ps
    lark:!>kill 11721
    [1]  Terminated cat
    lark:->
   44.last
    (1)简介
    last:显示过去多少个用户或终端登录到到机器。
    (2)部分参数说明
    last:[-数目][-f文件名][-t tty] [-h 节点名][-i IP地址][-l][-y][用户名. . .]
    last从文件/var/log./wtmp中读出用户登录和离开的所有记录,并且可以查询某个用户登录的情况,某个节点登录的情况,某个tty登录的情况。例如“last root -t console”将列出所有root用户在控制台上登录的情况,如果不加参数则last将显示出所有用户登录的情况。
    -数目:确定显示多少行。
    -f 文件名:用指定的log文件代替缺省的/var/log/wtmp文件。
    -h节点名:只显示从某个节点登录的用户。
    -l:用IP地址显示远端地址。
    -t tty:只显示在特定tty上登录的用户。
    -y:输出日期加上年份。
    (3)范例。显示过去3次用户fangh登录的情况:
    lark:->last -3 fangh
    fangh   ttyp1   csun01.ihep.ac.c Tue Aug 26 18:46 still logged in
    fangh   ttyp2   csun01.ihep.ac.c Mon Aug 25 22:32 - 23:14 (00:41)
    fangh  ttyp2    csun01.ihep.ac.c Mon Aug 25 19:58 - 21:59 (02:01)
    lark:->
    45.less
    (1)简介
    less:相对于more,用来按页显示文件。
    作者:Mark Nudelman
    (2)部分参数说明
    less -?
    less --help
    less- V
    less --version
    less [-[+]aBcCdeEfgGiImMnNqQrsSuUVwX]
       [-b bufs] [-h lines][-j line][-k keyfile]
       [-{oO}logfile][-p pattern][-P prompt][-t tag]
       [-T tagsfile] [-x tab] [-y lines][-[x]lines]
       [+[+]cmd][--][文件名]. . .   
    less类似于more,但是less允许向前或向后浏览文件。less不全部读入文件后才显示,所以在显示大文件时它的显示速度比vi之类的编辑器快。less采用termcap,所以它支持的终端类型非常广泛。
    -\? --help:列出less的所有操作命令。
    -a:查询时从当前屏幕的最后一行之后开始查询。
    -bn:指定less为每一个文件开nK的缓冲区。
    -B:当less的输入是从管道中来的时候,其缓冲区的大小是字典设置 ,如果加上本选项,则使用由-bn指定大小的缓冲区,但这有可能丢失前面输入的内容。
    -c:从上往下刷屏,缺省的是从下往上刷屏。
    -C:同-c,只是刷屏之前先清屏。
    -d:less在哑终端上要输出错误信息,此参数强制less继续执行刷屏滚屏之类的命令。
    -e:当less第二次到达文件末尾时则退出,缺省的退出方式是命令“q”。
    -E:当less第一次到达文件末尾时就退出。
    -f:打开非正常文件(一个目录,或一个设备文件)。
    -hn:指定回滚的最在行数。
    -I:搜寻时忽略大小写。
    -m:显示已经显示的文件百分比。
    -q -Q:不输出响铃符号。
    -r:显示控制符。
    --version -V:显示版权信息。
    (3)范例。显示test文件:
    lark:->  less test
    46.ln
    (1)简介
    ln:在文件间建立连接
    (2)部分参数说明
    ln [参数]源文件[目标文件]
    ln[参数]源文件. . .dierectory
    参数:
    [-bdfinsvF][-s backup-suffix][-V{numbered, existing, simple}]
    [--version-control={numbered, existing, simple}]
    [--backup][--directory][--force][--interactive]
    [--no-dereference][--symbolic][--verbose][--suf-
    fix=backup-suffix][--help][-version]
    -b, --backup:为删除的文件建立备份。
    -d, -F, --directory:允许超级用户建立硬连接。
    -f, --force:删除目标文件。
    -i, interactive:在删除文件时给出提示。
    -n, --no-dereference:如果目标文件是一个一个目录的符号连接则替代此符号连接,而不是在这个目录中作连接。
    -s, --symbolic:用符号连接代替硬连接。
    -v, --verbose:输出每个要连接的文件的文件名。
    --help:在标准输出上输出帮助信息并退出。
    --version:在标准输出上输出版本信息并退出。
   另外对链接文件做改变属性的动作是没有意义的,因为只有它们链接到的文件的属性才是文件的真正属性。
    (3)范例。将文件sourcefile连接到文件test:
    lark:-> ln -s sourcefile test
    lark:->ls -la test
    lrwxrwxrwx 1fangh users    10 Aug 26 20:36 test -> sourcefile
    lark:->
    47.logname
    (1)简介
    logname:输出用户的登录时的用户名。
   (2)范例
    lark:->logname
    fangh
    lark:->
    48.ls
    (1)简介
    ls,dir, vdir:列出目录下的文件(类似于DOS下的DIR命令)。
    (2)部分参数说明
    ls [-abcdefgiklmnopqrstuxABCFGLNQRSUX178] [-w cols] [-T cols] [-I pattern] [--all] [--escape] [--directory]
    [--inode] [--kilobytes] [--numeric-uid-gid] [--no-group] [--hid-control-chars] [--reverse] [--size]
[--width=cols] [--tabsize=cols] [--almost-all] [--ignore-backups] [--classify] [--file-type] [--full-time]
[--ignore=pattern] [--dereference] [--leteral] [--quote-name] [--trvitdobr] [--sort={none,time,size,extension}] [--for mat={long,verbose,commas,across,vertical,single-column}]
[--time={atime,access,use,ctime,status}] [--color[={yes,no,tty}]] [--colour[={yes,no,tty}]][--7bit][--8bit] [--help][--version][name. . .]
    -a, --all:列出目录系的所有文件,包括以“.”开头的隐含文件。
    -c, --time=ctime, --time=status:输出文件的i节点的修改时间,并按此排序。
    -d, --directory:将目录当作文件一样显示,而不是显示其下的文件。
    -e, --full-time:输出时间的全部信息,而不是输出简略信息。
    -f -U, --sort=none:对目录下的文件不排序。
    -g:无用。
    -i, --inode:输出文件的i节点的索引信息。  
    -k, --kilobytes:如果输出文件大小,则按K的形式输出。
    -l, --format=long, --format=verbose:输出文件的详细信息。
    -m, --format=commas:横向输出文件名,以“,”作分割符。
    -n, --numeric-uid-gid:用数字的UID,GID代替名称。
    -o, --color, --colour, --color=yes, --colour=yes:输出彩色文件名。
    -p -F,--classify:在每个文件名后附上一个字符以说明该文件的类型。
    -q, --hide-control-chars:用?代替不可输出的字符。
    -r, --reverse:对目录反向排序。
    -s, --size:在每个文件名后输出该文件的大小。
    -t, --sort=time:用时间对目录排序。
    -u, --time=atime, --time=access, --time=use:用文件的上次被访问的时间来排序。
    -x, --format=across, --format=horizontal:输出按列输出,横向排序。
    -A, --almost-all:输出除了“.”“. .”以外的所有文件。
    -B, --ignore-backups:不输出以“-”结尾的备份文件。
    -C, --format=vertical:输出按列输出,纵向排序。
    -G, --no-group:输出文件的组的信息。
    -L, --dereference:列出连接文件连接到的文件。
    -N, --literal:不限制文件长度。
    -R, --recursive:列出所有子目录下的文件。
    -S, --sort=size:用文件大小排序。
    -X, --sort=extension:用文件扩展名(最后一个“.”后的字符)的字符顺序排序。
    -l, --format=single-column:一行只输出一个文件。
    -7, --7bit:不输出SCII(ISO646)(0x20-0x7E)以外的字符。
    -8,--8bit:输出所有8-bit ISO8859(0x20-0x7E, 0xA1-0xFF)字符
    -8, --8bit:输出所有8-bit ISO 8859 (0x20-0x7E,0xA1-0xFF)字符。
    -w, --width cols:设定输出宽度为cols列。
    -T, --tabsize cols:设定每个TAB宽度为cols列。
    --color=no, --colour=no:不显示彩色文件名。
    --help;在标准输出上输出帮助信息并退出。
    -version:在标准输出上输出版本信息并退出。
    (3)范例。列出当前目录下的所有文件:
    lark:->ls -la
   total 6
    drwxr-x---  2 fangh   users          1024 Aug 26 20:52 ./
    drwxr-xr-x  19 root   root           1024 Aug 26 21:09../
    -rw-r--r--   1 fangh   users          15 Aug 21 21:57.bash_history
    -rw-r--r--   1 fangh   users          34 Aug 20 20:41 .less
    -rw-r--r--   1 fangh   users          114Aug 25 19:58 .lessrc
    -rw-r--r--   1fangh    users          72Aug 24 18:43  sourcefile
    lrwxrwxrwx 1fangh    users         10 Aug 26 20:36 test ->sourcefile
    lark:->
    49.man
    (1)简介
    man:显示具有一定格式的在线手册。
   (2)部分参数说明
    man[-adfhkKtwW][-m system][-p string][-C config - file]
    [-M path] [-P pager] [-S section -list] [section]查询名. . .
    man搜寻的路径由MANPATH和(MAN)PAGER 这两个环境变量设置。
    -C config_file:指定man.config这个配置文件的位置,缺省在usr/lib/man.config。
    -M path:指定man搜寻存放在线手册的路径。  
    -P pager:指定用来显示手册的程序,缺省/usr/bin/less。
    -S section _list:选择手册的章节。
    -k关键字:查询包含该关键字的所有man page。
    man对于新手和老手来说都是非常有用的工具,用来快速查询命令和程序的使用方法和参数。编程人员也可以用来查询C函数的用法。对于'rn(1)'或'ctime(3)'这样的输出,其中括弧中的数字是指Unix手册中该文件所在的章节。当你打man3 ctime时,表示是要查阅在第3节中的ctime的内容。下面是常见的Unix手册的分类。
    1    用户命令
    2    系统调用
    3    库函数
    4    设备和设备驱动程
    5    文件格式
    6    游戏
    7    有用的杂类,如宏命令包
    8    系统维护和管理命令
    (3)范例。查询ls的用法:
    lark->man ls
    50.mtools
    (1)简介
    mtools:用来在UNIX下访问DOS下磁盘的工具包。
    (2)工具介绍
    mcd:进入DOS子目录。
    mcd[DOS下的目录名]
    mcopy:拷贝DOS文件。
    mcopy[-tnvmoOsSrRA]源文件  目标文件
    mcopy[-tnvmoOsSrRA]源文件 [源文件列表]目标目录
    copy[-tnvm]MSDOS源文件
    t:将文本文件中的回车和换行符转化为换行符。
    n:覆盖已有文件时不给出提示信息。
    medl:删除DOS文件。
    medl [-v] msdos文件[msdos文件列表]
    mdeltree:删除DOS目录。
    mdeltree[-v]msdos目录[msdos目录列表]
    mdir:查看DOS目录。
    mdir[-w]mdos目录
    mdir[-f][-w][-a]msdos文件[msdos文件列表]
    -w 输出宽行文件列表(不包括时间信息)同DOS下的dir/w。
    -a列出隐藏文件。
    -f不计算磁盘剩余空间。
    mformat:格式化DOS磁盘。
     mformat[-t磁道][-h磁头][-s扇区][-l 扇标]
    [-F][-I文件系统版本][-S大小代码][-2 0磁道上的扇区
    ][-M软件扇区大小][-a][-X][-C]
    [-H隐藏扇区][-r根扇区]驱动器:
    mkmanifest:创建一个恢复UNIX格式的文件名的SHELL。
    mkmanifest[文件名]
    mlabel[-ves]驱动器:[新卷标]
    c清除原有卷标。
    s显示原有卷标。
    mmd:创建DOS目录。
    mmd[-voOsSrRA]msdos目录[msdos目录列表]
    mmove:移动DOS下的文件。
    mmove[-voOsSrRA]源文件 目标文件
    mmove[-voOsSrRA]源文件[源文件列表]目标目录
    mmount:mount DOS磁盘。
    mmount msdos驱动器[转载参数]
    mtype:显示DOS下的文件。
    mtpye[-ts]msdos文件[msdos文件列表]
    t观看文本文件。
    s略去高位字符。
    mrd:删除DOS下的目录。
       mrd[-v]msdos目录[msdos目录列表]
    mren:将DOS下的文件改名。
    mren[-voOsSrRA]源文件 目标文件
    51.mesg
    (1)简介
    mesg:选择接收或者不接收其他用户发来的信息。
    (2)部分参数说明
    mesg[n][y]
    此命令用来控制是否接受其他用户利用talk或是write向用户发出的信息(缺省是接受),如果用户不想被打扰的话(例如用户正在编辑文件时)使用merg n就可以不接受别的用户向用户的终端发过来的信息,不过这样有可能用户会错过别的用户发出的谈话请求,如果用户想取消这一设置使用mesg y就可以恢复接受其他用户发来的信息.mesg不跟参数则显示用户目前的设置情况。
    (3)范例
    lark:->mesg n
    lark:->mesg
    is n
    lark:->
    52.mkdir
    (1)简介
    mkdir:建立目录(同DOS下的md)。
    (2)部分参数说明
    mkdir[-p][-m权限][--parents][--mode=权限][--help]
    [--version]目录列表
    (3)范例
    -m, --mode权限:给予建立的目录以设定的权限(缺省为drwxr-xr-x)。
    -p, --parents:确定输入的每一层目录都存在,建立所有不存在的目录,例如mkdir -p test/book如果test目录不存在则建立test目录。
    --help:在标准输出上输出帮助信息并退出。
    --version:在标准输出上输出版本信息并退出。
    53.mknod
    (1)简介
    mknod:建立特殊文件。
    (3)部分参数说明
    mknod[选项]文件名{bcu}major minor
    mknod[选项]文件名p
    Options:
    [-m 权限][--mode=权限][--help][--version]
    mknod和来建立FIFO(管道文件)文件,特殊字符文件,特殊块文件。
    p建立FIFO文件。
    b建立块文件(有缓存)。
    c,u建立字符文件(无缓存)。
    注意  当建立块文件和字符文件时必须给出设备的major和minor数,mknod常常被和来建立设备文件(/dev目录下都是设备文件)。
    -m, --mode权限:给予建立的文件以设定的权限(缺省为0666)。
    --help:在标准输出上输出帮助信息并退出。
    --version:在标准输出上输出版本信息并退出。
    (3)范例
    lark:->mknod tt p
    lark:->ls -la tt
    prw-r--r-- 1 fangh  users  0 Sep 2 20:33 tt|
    lark:->
    54.more
    (1)简介
    more:在终端上按页观看文件的过滤器。
   more的功能没有less那么强大。而且less还提供了对more的模拟,不过一般和户可能更习惯于使用同DOS环境下相似的more.
   (2)部分参数说明
   more[0dlfqesu][-num][+/要搜寻的字符串][+行数][文件列表]
   -num:设定屏幕的大小(行数)
   -d:more给出提示“[Press space to continue, 'q' to quit.]”在输入错误的命令时给出“[Press 'h' for instructions.]”来代表响铃。
   -l:通常more将^L看成是一个特殊字符,如果文件中含有这个字符则more会在这一行停下来,此参数屏蔽这一特性。
   -f:让more逻辑地计算文件的行数,缺省是按显示在屏幕上的行数来计算的。
   -p:不滚屏,而是在清屏后显示下一屏。
   -c:不滚屏,而是从上到下显示下一屏。
    -s:将多个连续的空行转化成一行。
    -u:屏蔽下划线。
    +/:设定要搜寻的字符串。
    +行数:从文件的第几行开始显示。
    (3)范例。显示文件/etc/group并搜寻字符串bbs:
    lark:->more+/bbs/etc/group
    . . .skipping
   users::100:games
   nogroup::-1:
    bbs:x:99:bbs,bbsroot,bbsuser
    lark:->
    55.mv
    (1)简介
    mv:将文件改名。
    (2)部分参数说明
    mv[参数]源文件目标文件
    mv[ 参数]源文件 列表(支持通配符)目标目录
    Options:
    [-bfiuv][-S backup-suffix] [-V{numbered, existing,simple}] [--backup]
    [--force][--interactive][--update][--verbose][--suffix=backup-suffix]
    [--version-control={numbered,existing,simple}][--help][--version]
    mv将文件从一个文件名更改到另一个文件名,或者将一批文件从一个目录移动到另外一个目录。
   注意  在不同的文件是移动文件时,只能移动普通文件。
    -b, --backup:为要移动的文件制作备份。
    -f, --force:强制覆盖已有文件。
    -i, --interactive:在覆盖已有文件前给出提示让用户选择是否覆盖。
    -u, --update:在目标文件的时间比原文件新时不覆盖目标文件。
    -v, --verbose:在移动每个文件时输出相应信息。
    -help:在标准输出上输出帮助信息并退出。
    --version:在标准输出上输出版本信息并退出。
    (3)范例
     lark:->mv -v sourcefile destfile
     sourcefile ->destfile
     lark:->
     56.newgrp
    (1)简介
    newgrp:改变用户的组ID。
    sg:以用户的另一组ID运行命令。
    (2)部分参数说明
    new grp[-][组]
    sg[-]组[-c 命令]
    new grp这条命令用来在用户登录后改变用户的组ID,如果不跟“-”参数,则所有环境设置将被继续下来,反之则重新初始化,使用这条命令时如果不跟参数,则将用户的组改变为/etc/passwd文件中缺省组,在输入命令后会提示让用户输入密码。如果用户不是要改变到的组的成员或该组的密码部分是空的,则该用户将被屏蔽。sg命令同newgrp类似,但是该命令不改变用户的shell。在运行完给定的命令后退回原先的组ID和shell。
   (3)范例。改变用户的组ID到sys:
    bash # new grp sys
    #exit
    exit
    hash #
    57.nice
    (1)简介
    nice:以设定的优先权来运行程序。
    (2)部分参数说明
    nice[-n adjustment] [-adjustment][--adjustmen=adjustment][--help][--version][命令[参数列表]]
    -n adjustment, -adjustment, --adjustment=adjustment:adjustmen为要调整的新优先权,缺省为10,最高为-20(优先权最高)最低为19(优先权最低)
    --help:在标准输出上输出帮助信息并退出。
    --version:在标准输出上输出版本信息并退出。
    (3)范例。以优先权-19运行程序mpg123:
    lark:->nice -19/usr/local/bin/mpg123 music1.mp3
    58.passwd
    (1)简介
    passwd:设置用户的密码。
    (2)部分参数说明
    passwd[-f|-s] [用户名]
    passwd[-g][-r|R]组名
    passwd[-x max] [-n min] [-w warn] [-i inact]用户名
    passwd{-l|-u|-d|-S}用户名
    用户可以用passwd这个命令更改自己的登录密码,一般用户只能更改他自己的密码,超级用户可以更改其他所有用户的密码,超级用户和组的管理者可以更改组的密码,还可以用这个命令来更改用户的其他信息,如用户的全名,用户的登录shell,用户的密码失效的时间间隔等等。用户首先被提示输入旧密码,程序接受这个密码并将其加密后同文件/etc/passwd(或/etc/shadow如果有shadow的话)中存储的旧密码进行比较,用户只有一次机会输入正确的密码,但是超级用户不必输入,因为这样才可以替那些忘记密码的用户更改密码。用户的密码可以由大小写字母和阿拉伯数字及标点符号组成,最长8位,最短5位。如果用户输入的密码符合条件,则passwd提示用户再输入一遍以便确认,在两次输入密码相互吻合之后就将用户的密码改变。如果使用选项-g,则是让超级用户和组的管理者更改组的密码,如果不加组名则使用当前组。在使用-g选项的的同时使用-r选项则解除组的密码,使得任何一个用户都可以具有访问这个组的和,反之使用-R选项则让这个组对任何用户都是不可访问的。超级用户可以用选项-x,-n,-w,-i选项来设定用户密码的使用期限。-x选项用来设定用户密码有效的最长期限,在max天后用户需要改变密码,而-n选项则设定用户只有在min天之后才能改变密码,-w选项用来设置警告用户的天数,-i选项用来设置在incact天后将用户的帐号屏蔽掉,在inact天后用户将不能登录入自己的帐号。使用选项-l可以屏蔽一个用户的帐号(将用户的密码改成一个不可能解密的值),使用选项则恢复这个用户的帐号,密码被更改到上一次的值,即-l选项的逆过程。使用-S选项则输出用户帐号的状态,输出的信息由下列部分组成:第一部分是表示用户的帐号是屏蔽(L),无密码(NP),有可使用的密码(P),第二部分是最后一次改变密码的时间。下面四个部份分别是最小使用密码时间,最长使用密码时间,警告时间,无效时间。即上文所述-n,-x,-w,-i选项所设置的时间。
    下面向读者介绍一下密码设置应注意的一些问题,对于UNIX系统来说,其安全性同每个用户的密码都有关系,一个设置得很好的密码会让攻击系统的黑客花费很长的时间而一无所得,而一个简单的密码会让一个精心设置的系统的安全毁于一旦。因而仔细地挑选密码对于每个用户来说都是一件很重要的工作。下面给出设置密码的一些建议:不要使用自己或家人的名字的汉语拼音,生日,门牌号电话号码来组成密码,也不要使用一个字典里能查得到的英文单词作来密码,这些都属于容易攻击的密码范围,也不要将密码记在一个别人看得见的地方。另外为了使密码易记,可以使用下面的方法,以一句英文句子的第一个字母或最后的五个字母来作为密码,例如:
    Do you still love me tommorow?
    密码为Dyslmt?
    这就是一个黑客们不大可能加入字典的一个密码,其安全性显然较好。另外密码中最好包含数字和大小写,这样安全性会有所提高。
    (3)范例。更改密码:
   lark:->passwd
   Changing password for fangh
   Old password:oldpass    密码并不显示出来
   Enter the new password(minimum of 5, maximum of 8 characters)
    Please use a combination of upper and lower case letters and numbers.
    New password:newpass
    Re-enter new password:newpass
    Password changed
    lark:->passwd-S   显示用户情况
   fangh P09/05/97 0 99999 7-1
    lark:->
    59.paste
    (1)简介
   paste:将不同文件的行连接起来。
    (2)部分参数说明
    paste[-s][-d delim-list][--serial][--delimiters=delimlist][--help][-version][文件列表. . .]
   -s, --serial:一次只从一个文件中取一行,而不是从每个文件中取一行。
   -d, --delimitesr delim-list:使用delim-list中的符号来代替缺省的TAB键为行为割符。
   --help:在标准输出上输出帮助信息并退出。
    --version:在标准输出上输出版本信息并退出。
    缺省的paste将输出到标准输出上。
    (3)范例。将文件sourcel source2输出到文件dest中:
    lark->paste sourcel source2 >dest
    60.pr
   (1)简介
    pr:处理文件以便打印,输出到标准输出。
    (2)部分参数说明
    pr[+PAGE][-COLUMN][-abcdfFmrtv][-e[in-tab-char[in-tab-width]]][-b header][-i[out-tab-char[out-tab-width]]] [-l page-length][-n[number-separator[digits]]][-o left-margin][-s[column-seqarator]][-w pagewidth][--help][--version][文件列表. . .]
   +PAGE:从第一PAGE页开始打印。
   -COLUMN:输出COLUMN栏。
   -d:将输出的每一行后加一新的空白行。
   -e[in-tab-char[in-tab-width]]将TAB扩展为空格,in-tab-char为设定的TAB符(缺省就是TAB),in-tab-width,为每个TAB扩展为几个空格,缺省为8个。
    -F, -f:在页间使用换页符,缺省使用新行填满剩余部分。
    -h header:用header字符串来代替缺省的文件名作为输出的标题。
    -i[out-tab-char[out-tab-width]]:将空格缩定写成TAB,out-tab-char为设定的TAB符(缺省就是TAB),out-tab-width为几个空格缩写为TAB,缺省为8个。
   -l page-length:设置输出的每页有page-length行。
    -m:将所有文件同时并行输出到几个栏位内。
   -n[number-separator[digits]]:输出行号,number-separator为行号后的字符。缺省为TAB,digits为行号的位数,缺省为5。
    -o left-margin:设定左边界为left-margin个空格。
    -r:打不开文件时不输出错误信息。
    -s[column-seqarator]:用单个字符column-separator分栏,缺省为TAB。
    -w page-width:设定页宽为page-width列,缺省为72。
    --help:在标准输出上输出帮助信息并退出。
    --version:在标准输出上输出版本信息并退出。
   (3)范例。对文件destfile进行处理:
    lark:->pr -f destfile -n
    97-09-08 21:15   destfile   Page 1
    1  total9
    2   -rw-r--r   1fangh   users     172 Sep 6 17:09 aaa
    3   -rw-r--r   1fangh   users       0 Sep 8 21:15 desfile
    4   -rw-r--r   1fangh   users      99 Sep 6 21:08 destfile
    5   -rw-r--r   1fangh   users      28 Sep 7 14:28 list
    6   -rw-r--r   2fangh   users    1024 Sep 6 17:09 mail/
    7   -rw-----   1fangh   users    3652 Sep 8 15:45 mbox
    8   drwxr-xr-x 6fangh   users    1024 Sep 6 16:57 mp3/
    lark:->
    (1)简介
   ps:查看进程状态。
    (2)部分参数说明
    ps[-][lujsvmaxScewhrnu][txx][O[+|-]kl[[+|-]k2. . .]
    --sortX[+|-]key[,[+|-]]key[,. . .]] --help --vesion [pids]
    -l:长列表。
    -u:用户格式:给出用户名和开始的时间。
    -j:作业格式:给出pgid,sid。
    -s:信号格式。
    -v:虚拟存储器格式。
    -m:显示内存信息。
    -f:给出树状格式。
    -a:显示其他用户的进程。
    -x:显示没有控制台的进程。
    -c:从task-struct中给出进程名。
    -e:显示环境。
    -w:宽行输出,不自动换行。
    -h:无标题。
    -r:只显示正在运行的程序。
    -n:用数字来输出USER和WCHAN。
    txx:只显示受tty.xx控制的进程。
    pids:只显示特定的进程。
    --help:在标准输出上输出帮助信息并退出。
    --version:在标准输出上输出版本信息并退出。
    下面解释一下各栏的意义:
    FLAGS:长格式的F域。     S:      睡眠。
    UID:   用户的ID。        D:     不可打断的睡眠。
    PID:   进程的ID。        T:      停止或跟踪。
    PPID:  父进程的ID。      Z:      僵尸进程。
    PRI:   进程优先级。       W:      进程没有驻留页。
    NI:    标准UNIX的优先级 N:      进程有一负nice值。
    SIZE:  虚拟内存的大小。   TTY:    进程的控制台。
    RSS:   驻留空间的大小。  PAGEIN:主内存页失败的数目(页失败造成页
    WCHAN:进程等待的内核事件。从磁盘或CACHE中读取)。
    STAT:  进程状态:代码如下。TRS:文本驻留大小。
    R:     正在运行。          SHARE:共享内存。
                                 SWAP:交换设备上的K字节数。
    (3)范例。显示当前进程:
    lark:->ps -c
       PID TTY STAT TIME COMMAND
    8724 p4 s 0:00 tcsh
    8876 p6 R 0:00 ps
   lark:->
   62.pwd
    (1)简介
   pwd:显示正在工作或当前目录名。
    (2)部分参数说明
    pwd [--help, --version]
   --help:在标准输出上输出帮助信息并退出。
    --version:在标准输出上输出版本信息并退出。
    注意pwd输出的是真实径名,它不会输出符号连接的目录名。
   大多数UNIX shell内建pwd命令,这样用户运行的就有可能不是/bin/pwd这个 命令。
   (3)范例。列出当前工作目录:
    lark:->pwd
   /home/fangh
   lark:->
    63.quota
    (1)简介
   qutoa[-guv|q]
   qutoa[-uv|q] 用户名
   qutoa[-gv|q] 组名
    -g:显示用户所在某个组的磁盘限制。
    -u:显示用户的磁盘限制(缺省设置)。
    -v:显示没有分配空间的文件系统的分配情况。
    -q:显示简洁的信息,除了超过限额的情况一般不显示。
    注意  Linux缺省是不设置quota的,如果用户要设置quota请阅系统管理部分。
   (3)范例
    lark:->quota
   Disk quotas for users fangh (uid 10000):none
   lark:->
    64.rcp
    (1)简介
    rcp:在计算机间拷贝文件。
    (2)部分参数说明
   rcp [-px][-k realm]源文件名 目标文件名
    rcp[-px][-r][-k realm]源文件列表  目标目录
   -r:如果源文件名是目录,则拷贝所有子目录,目标文件必须也是目录。
   -p:尽量保持文件的修改时间和访问权限。
    -k:要求rcp获得外部许可。
    -x:给拷贝的数据流用DES方法加密。
   注意  要成功地拷贝文件,用户必须在目标机器上具有运行rsh的权利。参见rsh和rlogin。
    (3)范例。从机器siskin上拷贝文件:
    lark:-> rcp siskin:/home/fangh/mbox./mbox
   lark:->
    65.reset
    (1)简介
   reset:将终端复位。
    在使用终端的过程中,有时会发现屏幕在字符“花”掉了,这时使用reset就可以恢复,例如在运行完电路分析软件PSPICE后,就会发现屏幕字符错乱,使用reset就恢复正常。reset调用tput函数,向终端发出复位信号。如果屏幕被Ctrl+S锁住了,可以用Ctrl+Q来解除锁定。
   (2)范例。将终端复位。
    lark:->reset
    66.rm
   (1)简介
    rm:删除文件或目录。
   (2)部分参数说明
   rm [-dfirvR][--directory][--force][--interactive]
   [--recursive][--help][--version][--verbose]文件名列表. . .
   -d, --directory:本选项将用unlink替代rmdir来删除目录,只有超级用户有权使用。这种删除方法不用先使目录为空,但本选项在目录非空时会造成目录中的文件簇丢失,在执行这个命令后可以用fsck来修复文件系统。
   -f, --force:忽略不存在的文件,并且不给用户任何提示。
   -i, --interactive:在删除每个文件时提示用户选择“y”或“n”。
   -r, -R, --recursive:将整个目录删除,连带所有子目录。
    -v, --verbose:删除每个文件时输出文件信息。
   --help:在标准输出上输出帮助信息并退出。
   --version:在标准输出上输出版本信息并退出。    
注意 在LINUX
下如果产生类似于“-f”这种文件名的文件,删除是先跟“--”选项。这表明后面所跟的“-f”不是选项而是文件名,例如“rm-- -fle”是删除文件“-file”,在删除文件名中包含特殊字符的文件时,可以用“\+特殊字符”,或用""将文件名括起来,例如要删除文件“this is a test”可以用下列命令:
rm this/\is \a \test或者
rm“this is a test"
另外要特别注意,使用rm-rf*这个命令,如果用户是超级用户,并且在root下使用此命令,那么系统的所有文件将被删除。而在UNIX下恢复文件几乎是一
件不可能的事情。因而要谨慎对待这个命令。另外建议用户将rm定义为“rm-i”,并加入到用户的登录文件中。
    (3)范例。删除文件destfile。
    lark:->rm -v destfile
    destfile
    lark:->
    67.rmdir
    (1)简介   
    rmdir:删除空的目录。
    (2)部分参数说明
  rm"this is a test">
    rmid[-p][--parents][-help][--version]目录列表. . .
   -p --parents:例如rm -pdir/dir2如果删除dir2后dirl已经为空目录,则删除目录dir1。
    --help:在标准输出上输出帮助信息并退出。
    --version:在标准输出上输出版本信息并退出。
    (3)范例。删除目录test:
   lark:->rmdir test
   lark:->
   68.set
(1) 简介
set:显示或设置环境变量。
unset:删除环境变量。
(2) 部分参数说明
set变量名=变量值
如不跟参数则显示当前设置:
unset变量名
这两个命令都是shell内建的命令。
(3) 范例
lark:->set term=vt100     设置变量term为vt100
lark:->unset term         删除变量 term
69.sh
(1)简介
见bash
70.sleep
(1)简介
sleep:延迟设定的时间。
(2)部分参数说明
sleep[--help] [--version] number[smhd]
sleep延迟由 number+smhd给出的时间。
Smhd的含义是:
S秒          h小时
m分钟        d天
--help:在标准输出上输出帮助信息并退出。
--version:在标准输出上输出版本信息并退出。
(3)范例
  lark:->sleep 1 m    等待1分钟
  lark:->

 
 
 
   71 sort
   (1)简介
    set:将文本文件排序。
   (2)部分参数说明
    sort [-cmus][-t间隔符][-o 输出文件名][-T临时目录]
   [-bdfiMr][+POS1[-POS2]][-k POS1[,POS2]][文件名列表. . .]
   sort {--help, --version}
    sort有三种使用方式:缺省的是将文本文件排序,还可以合并文件。
    -c:检查文件是否已经排序,如果没有则给出错误信息并退出。
    -m:将文件列表中的文件作为一个组来排序,并合并起来,每个文件必须先各自排序。
    -b:排序时忽略行首的空白。
    -d:按电话本的目录方式排序忽略了字母,数字和空白以外的所有字符。
    -f:将小写字母当作大写字母来排序,例如“b”作为“B”来排序。
    -i:忽略ASCII字符内码不在范围040-0176之间的字符。
    -M:将每一行开头如果是月份的英文缩写的前三个字母的话被按月份大小排序。
    -n:按数字大小而不是字母顺序来排序。
   -r:反向排序。
    -o输出文件名:将输出重定向到文件中取代缺省的标准输出。
    -t间隔符:用设定的间隔符取代缺省的空格符。
    +POS1[POS2]:用每一行的第POS1列到第POS2列来排序,如不给出POS2则到行尾。
    -k POS1[,POL2]:同上。
    --help:在标准输出上输出帮助信息并退出。
    --version:在标准输出上输出版本信息并退出。   
    (3)范例。列出文件testfile的内容:
    lark:->cat testfile
    231
   this is a test
   1231
   do you know
    321
   let's go
   lark:->sort testfile    将文件testfile排序
   1231
    231
    321
   do you know
   let's go
   this is a test
   lark:->sort -n testfile    将文件testfil按数字大小排序
    231
   321
   1231
    do you know
   let's go
    this is a test
  lark:->
    72.split
    (1)简介
    split:分割文件。
    (2)部分参数说明
   split [-lines] [-l lines][-h bytes[bkm]][-C bytes[bkm]]
    [--lines=lines]  [--bytes=bytes[btm]]  [--line-
   bytes=bytes[bkm]]  [--help][--version] [输入文件[输入文件]]
   输出文件名为输出文件的名称,程序自动在其后加上aa,ab,ac,. . . .,缺省为x。
    -lines,-l lines, --lines=lines:从输入文件中读出lines行,然后写入一个新的输出文件。
   -b bytes[bkm], --bytes=bytes[bkm]:从输入文件中读出bytes(b -512比特,k -1 K,m-1兆)大小的数据,然后写入一个新的输出文件。
   -C bytes[bkm], --line-bytes=bytes[bkm]:写入每输出文件的一行的大小被限制为bytes大小。
   -help:在标准输出上输出帮助信息并退出。
    -version:在标准输出上输出版本信息并退出。
    (3)范例。分割文件tcsh.txt:
    lark:->split tcsh.txt tcsh.txt
    lark:->ls -la tcsh*
    -rw-r--r-- 1 fangh   users       252409  Sep 19 13:30  tcsh.txt
    -rw-r--r-- 1 fangh   users       48074   Sep 19 13:30  tcsh.txt.aa
    -rw-r--r-- 1 fangh   users       46000   Sep 19 13:30  tcsh.txt.ab
    -rw-r--r-- 1 fangh   users       46097   Sep 19 13:30  tcsh.txt.ac
    -rw-r--r-- 1 fangh   users       47867   Sep 19 13:30  tcsh.txt.ad
    -rw-r--r-- 1 fangh   users       43427   Sep 19 13:30  tcsh.txt.ae
    -rw-r--r-- 1 fangh   users       20944   Sep 19 13:30  tcsh.txt.af
    lark:->
    (1)简介
    stty:设置或显示终端行数的设置情况。
    (2)部分参数说明
   stty[设置. . .]
    stty{-a,--all,-g,--help,--save,--version}
   stty如果不跟参数,则输出当前的终端设置情况。如跟参数则用“-”表示关闭该设定。控制设定:
    [-]parenb:输出时产生奇偶校验位,并且必须输入时也带奇偶校验。
    [-]parodd:设置为奇校验。
    cs6 cs6 cs7 cs8:设置字符大小为5,6,7或8比特。
    [-]hupcl[-]huph:当本终端最后一个进程结束时送出hangup信号。
    [-]cstopb:每个字符用两个停止位,加“-”号时为一个。
    [-]creak:允许接受输入。
    [-]clocal:禁止调制解调器控制信号。
    [-]crtscts(np):使能RTS/CTS握手信号。
    输入设定:
    [-]ignbrk:忽略break字符。
    [-]brkint:break字符产生一个中断。
    [-]ignpar:忽略奇偶校验错的字符。
    [-]parmrk:标志奇校验错的字符。
    [-]inpck:使能对输入的奇偶校验检查。
    [-]istrip:对输入字符的高八位清零。
    [-]inlcr:将换行符转换为回车符。
    [-]igncr:忽略回车。
    [-]icrnl:将回车符转换为换行符。
    [-]ixon:使能XON/XOFF流控制。
    [-]ixoff[-]tandem:如果输入缓冲满则输出停止字符,当输入缓冲空时输出开始字符。
    [-]iuclc(np):将大写字符转换为小写字符。
    [-]ixany(np):允许任何字符重置输出。
    [-]imaxbel(np):如果新的字符来到时输入缓冲满则响铃,但是并不清缓冲。
    [-]olcuc(np):将小写字母转变为大写字母。
    [-]ocrnl(np):将回车符转变为新的换行符。
    [-]onlcr(np):将换行符转变为回车加换行符。
    [-]onocr(np):不在第一列输出回车。
    [-]ofill(np):用填充字符来代替时间延迟。
    [-]ofdel(np):使用删除符代替空白符为填充时使用的字符。
    nll n10 (np):换行延迟类型。
    cr3 cr2 cr1 cr0 (np):回车延迟类型。
    tab3 tab2 tab1 tab0 (np):水平制表延迟类型。
    bs1 bs0 (np):退格延迟类型。
    vt1 vo0(np):垂直制表延迟类型。
    ff1 ff0 (np):表格延迟类型。
    本地设置:
    [-]isig:使能中断,退出,挂起等特殊字符。
    [-]icanon:使能删除,杀死,等特殊字符。
    [-]iexten:使能非POSIX标准的特殊字符。
    [-]echo:输入回显。
   [-]echoe,[-]crterase:将删除符回显为退格-空格-退格。
   [-]echok:在杀死符后回显新行。
   [-]echonl:没有回显其他字符时也回显新行。
   [-]noflsh:在中断和退出等特殊字符后禁止清空缓冲。
   [-]xcase(np):在设置了icanon的情况下用“\”加小写字母来输入和显示相应的大写字母。
   [-]tostop(np):停止在后台的作业向终端输出。
   [-]echoprt[-]prterase(np):在符号“\”和“/”之间将删除符回显为后退符。
   [-]echoctl[-]ctlecho(np):用‘ ^c’的形式来输出控制符。
   [-]evenp[-]parity:同parenb -parodd cs7。加‘-’后,同-parenb cs8。
   [-]oddp同parenb parodd cs7。加‘-’后,同-parenb cs8。
   [-]nl同-icrnl -onlcr。加‘-’后,同icrnl。
   合并设定:
   ek:交删除和杀死符重置到缺省值。
   sane:将所有设置重置到缺省值。
    [-]pass8:同-parenb-istrip cs8。加‘-’后,同parenb istrip cs7。
    [-]litout:同-parenb -istrip -opost cs8。加‘-’后,同parenb istrip opost cs7。
    特殊字符:
    intr送出中断信号。
    quit送出退出信号。
    erase删除输入的最后一个字符。
    kill删除当前行。
    eof送出文件结束符。
    eol行结束符。
    eol2(np):交替的行结束符。
    swtch(np):不同SHELL之间切换。
    start重新开始输出。
    stop停止输出。
    susp送出终端停止符。
   dsusp(np):在清空输入缓冲后送出终端停止符。
   rprnt(np):重绘当前行。
    werase(np):删除输入的最后一个单词。
   特殊设定:
    minN:当设定-icanon后,在特定时间内最少要输入N个字符。
    TimeN:设定上一选项的特定时间。
    ispeed N:设定输入速度为N。
    ospeed N:设定输出速任*N。
    rows N (np):通知系统核心终端有N列。
    cols N columns N (np):通知系统核心终端有N行。
    size(np):输出系统核心已知的终端的行列数。
    line N(np):使用行设定N。
    speed:输出终端的速度。
    N:设定输入和输出的速度为N,N可以为:
    0 50 75 110 134 134.5 150 200 300 600 1200 1800 2400 4800 9600 19200 38400 exta extb。
exta同19200;extb同38400。如果设定了0又设定了-clocal则终端将被挂起。
    选项:
    -a, --all:输出所有设置。
   -g, --save:输出所有设置,输出格式为另一个stty可以恢复当前设置的格式。
    --help:在标准输出上输出帮助信息并退出。
    --version:在标准输出上输出版本信息并退出。
    (3)范例。输出当前设置:
    lark:->stty -a
   speed 9600 baud;row 0; columns 0;line =0;
   intr=^C;quit=^\;eras=^?;kill=^U;eof=^D;eol=;
   eol2=;start=^Q;stop=^S;susp=^Z;rprnt=^R;werase=^W;
   lnext=^V;flush=^O;min=1;time=0;
   -parenb -parodd cs8 -hupcl -cstopb cread -clocal -crtscts
   -ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon
   -ixoff
   -iucle -ixany -imaxbel
   opost -olcuc -ocnl onlcr -onocr -onlret -ofill -ofell -ofdel nl0 cr0 tab0 bs0
    vt0 ff0
   isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop
    -echoprt
    echoctl echoke
   lark:->
    74.sync
    (1)简介
    sync:清空LINUX文件系统的缓冲区。
   在系统的CPU停止工作以前必须调用该命令来将系统的缓冲区写入硬盘。REBOOT和HALT指令都将调用该命令来清空缓冲区。LINUX的优点之一就是磁盘存取速度快,这是因为它将不用的内存都拿来作缓冲区了,这带来的问题就是在系统前必须将缓冲清空,否则就会丢失信息和数据。请看Linus本人是如何说的:“sync这个命令只保证在一定时间内将数据写入硬盘,这需要一定的时间写完所有的数据,如果用户在执行这条命令后马上关机的话,请稍等片刻。”(但是REBOOT和HALT命令会代替用户作这些工作。)
    update -周期性地清空LINUX文件系统的缓冲区。
    它有两种工作模式,一种是缺省地每5秒钟写一些块(不调用sync),一种是每30秒调用一次sync。在系统启动时update作业应该越早运行越好,在SLACKWARE版本中在/etc/rc.d/rc.S中的第二条命令就是运行update。它的进程号一般是13。
    (2)部分参数说明
    update[选项]
    -S:只使用sync工作。
    -a秒:设定调用sync的时间间隔,缺省是30秒。
    -f秒:设定缺省工作方式的时间间隔,缺省是5秒。
    75.su
    (1)简介
    su:改变用户的ID或成为超级用户。
    作者为Julianne Frances Hargh()。
    su可一让用户在一个登录的shell中不用退出就可以变成另外一个用户,如果后面不跟参数,则su缺省地变成超级用户。执行su命令时,程序会让用户输入密码,如果密码不正确,则程序将给出出错信息后退出,所有su的动作都会被系统记录在一个log文件中,以便探测谁在恶意攻击系统。su之后,当前的所有环境变量都会被传递过去,但是路径值$PATH将被重置为/bin:/usr/bin(对一般用户)或/sbin:/bin:/usr/sbin:/usr/bin(对超级用户)这两个缺省值可以通过改变文件/etc/login.defs中的ENV_PATH值和ENY_SUPATH的值来改变。
    (2)部分参数说明
    su [-][用户名[参数]]
    su后面可以跟参数,例如su用户名-c命令,就会在改变用户ID后执行相应的命令并退出。
   (3)范例。变更为用户fangh:
   lark:->su fangh
   Password:
    >whoani
   fangh
    >
   76.sudo
   (1)简介
    sudu:以超级用户的身份执行某些命令。
    visudo:编辑可以使用sudo命令的用户列表。
    在系统管理中,有时需要给予某些用户的部分系统特权以便执行某些系统命令。例如shutdown,halt,lpc等命令,但是系统管理员又不愿意给予他们全部的系统特权,这时sudo命令就非常有用了。Sudo允许经过同意的用户以超级用户的身份执行指令。Sudo一/etc/sudoers这个文件来判定谁是授权的用户。Sudo将会提示用户输入密码开始一段N分钟的可以使用的时间(其中N是在安装的进修定义的且缺省值为5分钟结束后自动退出)。
   Sudoers这个文件是由一个选择性的主机别名(host alias)域,一个选择性的指令别名(command alias)域以及用户说明(user specification)域所组成的。所有的指令别名或主机别名必须需以他们自己的关键字作为开始(Host_Alias/Cmnd_Alias)。注意,只有第一次使用的用户(在用户说明域里有记录的用户)使用时会有说明。
    用户说明域格式:
    用户 有权限[:有权组]. . .
    有权组::=主机类别=[op]指令类别[,[op]指令类别]. . .
   主机类别::=小写的主机名或主机别名。
   指令类别::=指令或指令别名。
    op::=‘!’否定符。
    主机别名域格式:
   Host_Alias主机别名=主机列表
    Host_Alias::=一个关键字。
    主机别名::=一个大写的别名。
    主机列表::=以逗号间隔的一些主机名
   指令别名域格式:
    Cmnd_Alias指令别名=指令列表
    Cmnd_Alias::=一个关键字。
    指令别名::=一个大写的别名。
    指令列表::=以逗号间隔的一些指令。
    在“#”符号后面是注解。太长的行可以使用“\”来分成新的行。保留的别名“ALL”在{Host,Cmnd}_Alias里都可以使用。不要使用关键字“ALL”来定义一个别名,这个别名无效。
    注意,“ALL”代表全部的主机跟指令。
    用户可以使用这个语法从所有定义中掉一些项目:
    user host =ALL,!ALIASI,!/etc/halt. . .
sudoers文件的范例文件:
    # Host alias specification
    Host_Alias   HUB=houdini.rootgroup.com:\
               REMOTE=merlin,kodiakthorn,spirit
    Host_Alias   MACHINES=kalkan,alpo,milkbones
    Host_Alias   SERVERS=houdini,merlin,kodiakthorn,spirit
    #Command alias specification
     Cmnd_Alias  LPCS=/usr/etc/lpc,/usr/ucb/lprm
     Cmnd_Alias  SHELLS=/bin/sh,/bin/csh,/bin/tcsh
     Cmnd_Alias  MISC=/bin/rm,/bin/cat:\
                 SHUTDOWN=/etc/halt,/etc/shutdown
     # User specification
     britt        REMOTE=SHUTDOWN:ALL=LPCS
      robh      ALL=ALL,!SHELLS
     nieusma   SERVERS=SHUTDOWN,/etc/reboot:\
               HUB=ALL,!SHELLS
    jill         houdini.rootgroup.com=/etc/shutdown,MISC
   markm      HUB=ALL,!MISC,!/etc/shutdown,!/etc/halt
   billp        ALL=/usr/local/bin/top:MACHINES=SHELLS
   davechieb   merlin=ALL:SERVES=/etc/halt:\
              kodiakthorn=ALL
   上面的sudoers说明文件是由4个主机别名说明,4个指令别名说明以及7个用户说明所组成的。Britt被允许在远端机器(merlin,kodiakthorn,还有sprirt)上执行/etc/halt,/etc/shutdown,/usr/etc/lpq以及/usr/ucb/lprm。Rohn被允许在任何机器上执行除了SHELL指令以外的任何指令。Jill被允许在机器houdini上执行/etc/shotdown,/bin/rm,以及/bin/cat。Davehieb可以在机器merlin以及kodiakthor上执行任何指令并且可以halt服务器。
    Sudoers文件应该用visudo编辑,它会锁住该文件并且检查语法,以避免产生错误的文件。Sudo被设计成用4.3BSD的syslogging来记录,但是也可以使用用户自己的log进程来记录如果一个没有被授权的用户执行了sudo的话,将会有一封mail从该用户处寄送到当地的管理员处(Linux缺省是root)。所有的设定都是在安装时定义的由sudo.h及Makefile定义,但是Linux缺省的是安装好的执行文件,用户如果要更改的话,需要重新编译与安装。
   允许巢状的主机以及指令别名。
   允许在sudoers文件中使用host specifie,以便使全局符号(user ALL,!SERVERS,. . .=commands)。
   允许在sudores文件里的用户别名(就如同主机/指令别名一样)。
    (2)部分参数说明
   sudo命令
   (3)范例。用sudo来halt机器:
    lark:->sudo halt
   77.tail
   (1)简介
    tail:显示文件的最后一部分
    (2)部分参数说明
   tail [-c[+]N[bkm]][-n[+]N][-fqv][--bytes=[+]N[bkm]]
   [--lines=[+]N][--follow][--quiet][--silent][--verbose]
  [--help][--version][文件名列表]
   tail缺省显示文件名列表中的每个文件的最后十行,如果没有文件名或文件名为“-”则其从标准输入中读取文件,如果有多个文件则其会在文件前面加上“= =>文件名<==”以便区分。
   -c N, --bytes N:显示文件后部的N比特大小的部分,N后面可以跟bkm参数。
   b:512比特的块。
   k:1k的块。
   m:1M的块。
   -f:--follow:如果文件大小在增长的话,tail将跟随文件增长而显示。
   -l, -n N, --lines N:显示文件末尾的N行。
   -v,--verbose:一直输出“= =>文件名<= =”形式的文件名。
   --help:在标准输出上输出帮助信息并退出。
   --version:在标准输出上输出版本信息并退出。
   (3)范例。显示文件/etc/DIR_COLORS的最后三行:
    lark:->tail -v -n 3/etc/DIR_COLORS
    = => /etc/DIR_COLORS<= =
   .xbm 01:35
   .xpm 01:35
   .tif 01:35
   lark:->
   78.tar
   (1)简介
   tar:GNU版的文件打包备份的工具。
    (2)部分参数说明
   tar [-] A --catenate --concatenate | c --create |d --diff --compare |r --append | t --list | u-update |x
-extract --get [--atime -preserve][-b, --block-size N][-B, --read--full-blocks][-C, --directory DIR][
--checkpoint][-f, --file[HOSTNAME:]F][--force-local][-F,--info--script F--neo--volume-script F][
 -G, --incrementat][-g, --listed-incremental F][-h, --dereference][-i, --ignore-zeros][--ignore-failed-
read][-k, --keep-old-fils][-k, --starting-file F][-l,--one-file-system][-L, --tape-lengthN][-m,
--modification-time][-M,--multi-volume] [-N, --after-date DATE, --newer DATE][-o, --old-
archive, --portability][-O, --to-stdout][-p, --same-permissions, --preserve-permissions][-P, --absolute-paths] [--preserve][-R, --record-number][--remove-files]
[-s,--same-order, --preserve-order][--same-owner]
[-s,--sparse][-T,--files-from F][--null][--totals][-v,--verbose][-v, --label NAME]
[-version] [-w, --inteactive, --confirmation][-W,--verify][--exclude FILE][-X,--exclude-from FILE]
[-Z, --compress,--uncompress][-z, --gzip, --ungzip],[-use-compress-progran PROG][--block-compress][-[0-7][lmh]]
[文件名列表]
[目录名列表]
tar是对一般用户最易用和最可靠的实用程序,从归档介质(可以是一个磁带机,也可以是普通文件)上保留和恢复文件,也能从之个文件归档中抽取单个文件。
   -A, --catenate, --concatenate:向归档文件中追加另一个tar文件。
   -c, --create:建立新的归档文件。
   -d, --diff, -compare:将归档文件和文件系统上的文件作比较。
   --delete:从归档文件中删除文件(不能够用在磁带机上)。
   -r, --append:向归档文件末尾追加文件。
   -t, --list:对归档文件列目录。
   -u, --update:只追加比归档文件中的文件新的文件。
   -x, -extract, --get:从归档文件中解出文件。
   --atime-preserve:不改变文件的访问次数。
    -b, --block-size N:块大小为N乘以512比特(N缺省为20)。
    -B, --read-full-bolcks:为兼容4.2BSD而设。
    -C,--directory DIR:将目录名改为DIR。
    --checkpoint:在读归档文件时输出文件名。
   -f, --file[HOSTNAME:]F:使用设备F来储存归档文件。
   -force-local:强制设定归档文件为本地文件。
   -F, --info-script F --new-volume-script F为在每盘磁的结尾执行设定的脚本文件。
   -G, --incremental:用老的GNU格式来打包/列出/解开归档文件。
   -g, --listed-incremental F:用新的GNU格式打包/列出/解开归档文件。
   -h, --dereference:不保存符号连接而保存其指向的文件。
   -i, --ignore-zores:忽略零block的文件。
   --ignore-failed-read:在文件不可读时不退出。
   -k, --keep-old-files:在从归档文件中释放文件时不改写现有文件。
   -K,--starting-file F:从归档文件的第F个文件开始。
   -l, --one-file-system:只在本地文件系统产生归档文件。
   -L, --tape-length N:在写完N*1024byte后换磁带。
   -m, --modification-time:归档时不改变文件的修改时间。
   -M, --multi-volume:存放/列出/解开多卷的归档文件。
   -N, --after-date DATE, --newer DATE:只存放比日期DATE新的文件。
   -o, --old-archive,--portability:和旧的V7格式存放(缺省为ANSI格式)。
   -O, --to-stdout:将文件解开到标准输出。
   -p, --same-permissions, --preserve-permissions:解开文件时恢复所有访问限制。
   -P, --absolute-paths:解开文件时使用绝对路径。
   --preserve:同-p -s。
  -R, --record-number:显示归档文件内部的所有记录数。
  --remover-files:将文件归档后删除源文件。
  -s, --same-order, --preserve-order:显示同归档文件中顺序一样的文件名。
  --same-owner:解开文件时恢复原所有者。
  -S, --sparse:有效存放稀疏文件。
  -T, --files-from F:从文件F中读取要释放或解开的文件名。
  --null:使能-T参数可以读取有空格的文件名,屏蔽参数-C。
    --totals:在创建文件时显示总字节数。   
    -v, --verbose:处理过程中输出相关信息。
    -V, --label NAME:用卷标名NAME来命名归档文件。
    --version:输出版本号。
    --w, --interactive, --confirmation:进行每一步操作前要确认。
    -W, --verify:在打包文件后进行校验。
    --exclude FILE:不将文件FILE归档。
    -X, --exclude-from FILE:不将文件FILE中列出的文件归档。
    -Z, --compress, --uncompress:用compress来压缩归档文件。
    -z, --gzip, --ungzip:用gzip来压缩归档文件。
   -use-compress-program PROG:用自定义的压缩程序PROG来压缩归档文件。
   -block-compress:将压缩的归档文件做成块,以便磁带机使用。
   -[0-7][1mh]:设定磁带驱动器和密度。
   (3)范例。将当前目录下所有.txt文件打包并压缩到归档文件bak.tar.gz:
    lark:>tar czvf bak.tar.gz ./* .txt
    ./tcsh.txt
    将目录./sec打包到归档文件sec.tar.gz:
    lark:->tar czvf sec.tar.gz ./sec
    ./sec/
   ./sec/advance_edu.tgz
   ./sec/email
   ./sec/doc.tar
   lark:->
   79.tcsh
   (1)简介
   tcsh:一个带有文件名自动补充和行编辑功能的C shell。
   tcsh是著名的伯克利UNIX的C SHELL的增强版本,它既可以作为一个交互式的登录SHELL又可以作为脚本文件的处理器。
   (2)部分参数说明
   -b:强迫tcsh中止对参数的处理,在此选项之后的参数都作为传递给tcsh的命令来处理。
   -c:若用-c参数,则tcsh执行完后面所跟的命令后退出。
   -d:从文件-/.cshdirs中读入目录堆栈。
   -Dname[=value]:设置环境变量name的值为value。
   -e:tcsh执行命令后返回值为非零值时则退出tcsh。
   -f:tcsh忽略配置文件-/.tcshrc,这样启动tcsh的过程会加快。
   -F:tcsh使用fork来代替cfork以产生新进程。
   -i:即使标准输入不为终端,也成为交互式的shell。
   -l:表明此shell为登录shell。
   -m:tcsh从当前目录下读取-/.tcshrc即使此目录不为当前用户的根目录。
   -n:读入命令但是并不执行。
   -q:tcsh接受SIGQUIT信号。
   -s:从标准输入到接受命令。
   -t:使tcsh只处理单行命令,当一行写不下的时候,用“/”可以在下一行接着输入。
   tcsh在作为登录shell启动时,首先读取系统配置文件/etc/csh.cshrc和/etc/csh.login.接着到用户的根目录下去读取-/.tcshrc,如果没有-/.tcshrc则去读取-/.cshrc,接着读取-/.history,-/.login最后是-/.cshdirs。非登录shell启动时只读取/etc/csh.cshrc和-/.tcshrc。
   ?命令行编辑器:使用方向键来编辑,上下键在历史记录中选择命令,左右键在命令行上前后移动进行编辑。
    ?命令补充和列表:在用户键入命令时,经常不能记住命令或目录的全名,这时候tcsh可以帮助用户将剩余部分补全,例如用户键入“/usr/lost”但是忘记后面的部分,这时候用户只需要键入TAB键,tcsh就会自动将剩余的部分补全--“/usr/lost+found./”,当用户给出的部分有多个匹配的情况下例如“/usr/l”则TAB将无法补全,这时候用户只须键入“Ctrl+D”则tcsh将替用户列出所有匹配的情况:”,用户就可以自己选择了。
   ?拼写检查:在设置变量correct的值为cmd后,则tcsh会对用户输入错误的命令给出提示:
   >set correct=cmd
    >ls/usr/bin
    CORRECT>ls/usr/bin(y|n|e|a)?
   如果回答yes就会将lz更正为ls。此外,tcsh所占内存比ash要大400k,为1.2M左右,如果用户内存不足的话可以换用其他shell。
   以上的介绍只是一些粗略的介绍,TCSH的强大功能有待于用户在实践中去发掘。或使用man tcsh去查看tcsh的用户手册。
  80.tee
   (1)简介
   tee:从标准输入中读取,向标准输出和其他文件中写入。
  (2)部分参数说明
   tee [-ai] [--append] [--ignore-interrupts] [--help]
   [--version] [文件名列表]
   -a, --append:将标准输入追加到输出文件的后面而不是缺省的覆盖它。
   -i, --ignore-interrupt:忽略中断信号。
   --help:在标准输出上输出帮助信息并退出。
   --version:在标准输出上输出版本信息并退出。
   (3)范例。将输入重定向到标准输出和文件out中:
   lark:->tee out
   this is a test
   this is a test
   lark:->cat out
   this is a test
   fish:->
   81.test
   (1)简介
   test:比较文件类型并返回相应的值。
   (2)部分参数说明
   test[表达式]
   test[--help, --version]
   test在表达式为真的时候返回0,在表达式为假的时候返回1,可行的表达式如下:
   -b文件名:如果文件存在且为块文件则为真。
   -c文件名:如果文件存在且为字符文件则为真。
    -d文件名:如果文件存在且为目录则为真。
    -e文件名:如果文件存在则为真。
    -f文件名:如果文件存在且为普通文件则为真。
    -g文件名:如果文件存在且为设置组则为真。
    -k文件名:如果文件是真实文件则为真。
    -L文件名:如果文件存在且为符号连接文件则为真。
    -p文件名:如果文件存在且为管道文件则为真。
    -r文件名:如果文件存在且可读则为真。
    -s文件名:如果文件存在且比上一个文件大则为真。
    -S文件名:如果文件存在且为socket文件则为真。
    -t[fd]:如果fd在一个终端上打开则为真。
    -u文件名:如果文件存在且其设置用户ID的位为1则为真。
    -w文件名:如果文件存在且可写则为真。
    -x文件名:如果文件存在且可执行则为真。
    -O文件名:如果文件存在且其属主为有效用户则为真。
    -G文件名:如果文件存在且其属组为有效组则为真。
    文件1 -nt文件2:如果文件1比文件2新则为真。
    文件1 -ot 文件2:如果文件1比文件2旧则为真。
    -z字符串:如果字符长度为0则为真。
    -n字符串:如果字符串长度不为0则为真。
    字符串1=字符串2:如果两字符串相等则为真。 
    字符串1!=字符串2:如果两字符串不相等则为真。
    !表达式:如果表达式为假则为真。
    表达式1-a表达式2:表达式1和表达式2都为真则返回真。
    表达式1-o表达式2:表达式1或表达式2只要有一个为真就返回真。
    参数1 OP参数2:OP为-eq, -ne, -lt, -gt, 或-ge。
    此命令一般是为shell编程使用。
    82.time
    time:取得以秒为单位的当前时间。
    此条命令取得从00:00:00 GMT,January 1,1970开始的总时间。
    (2)范例
    lark:->time
    0.170u 0.400s 12:48.52 0.0%   0+0k 0+0io 2229pf+0w
    lark:->
    83.top
    (1)简介
    top:显示系统的最高进程。
    top这个命令可以即时显示当前系统最占CPU时间的进程,它同时提供一个交互的界面让用户可以观察系统进程情况,它可以按照CPU使用情况,占内存大小,运行的时间来对进程排序,这是系统管理的一项必不可少的工具。
    (2)部分参数说明
    top[-][d delay][q][c][S][s][i]
    d:设定刷新屏幕的时间间隔。
    q:此选项使得top刷新时间为零,如果是超级用户使用这个选项的话,则top将以最高优先级运行。
    S:设定累积模式,即一个进程的CPU时间包括它的所有死子进程消耗的时间。
    s:使top以安全方式运行,即对外界输入不作反应。
    I:忽略死进程和僵尸进程。
    c:显示命令行。
   在运行top时按h键就可以观看top交互命令的帮助。
    (3)范例
    lark:->top
    10:16pm up2 days, 7:53, 2users, load average;0.14, 0.08,0.06
    66 processes:5sleeping, 1 running, 0 zombie, 0stopped
    CPUstates:4.7%user, 1.3%system, 5.6%nice,94.4%idle
    Mem:63104Kav, 60608K used, 2496K free, 35332Kshrd, 9836Kbuff
    Swap:128516K av, 292used, 128224K free
    PID USER    PRI NI  SIZE  RSS SHARE STAT LIB %CPU %MEM TIME COMMAND
   5968 root     15 0 11672  11672  1520 S       0  4.1 18.4   3:41X
  10944 fangh   17 0    460   460   344 R       0  1.1  0.7   0:00top
  10356 bbs      1 0    384   384   292 S       0  0.1  0.6   0:00 bbsnnrp
  10359 bbs      1 0    396   396   282 S       0  0.1  0.6   0:00 bbsnnrp
  9526 root       1 0    500   500   388S       0  0.1  0.7   0:00 in.telnetd
  7823 chenxy    1 0   2144   2144  1232S       0  0.1  3.3   0:00 cxterm
     1 root       0 0    320   320   252 S       0  0.0  0.5   0:05 init
     2 root       0 0      0     0     0 SW     0  0.0  0.0   0:00 kflushd
     3 root     -12-12     0     0     0 SW     0  0.0  0.0   0:00 kswapd
     4 root       0 0      0     0     0 SW     0  0.0  0.0   0:00 nfsion
     5 root       0 0      0     0     0 SW     0  0.0  0.0   0:00 nfsiod
     6 root       0 0      0     0     0 SW     0  0.0  0.0   0:00 nfsiod
     7 root       0 0      0     0     0 SW     0  0.0  0.0   0:00 nfsiod
  9502 root       0 0    292   292   236 S       0  0.0  0.4   0:00 agetty
   120 root       0 0    544   544   400 S       0  0.0  0.8   0:12 nmbd
    14 root       0 0    284   284   228 S       0  0.0  0.4   0:00 kerneld
    84.touch
    (1)简介
    touch:改变文件的时间参数。
    touch将文件的访问时间,修改时间设置为系统的当前时间,如果该文件不存在则建立一个空的新文件。
    (2)部分参数说明
    touch [-acfm] [-r reference-file] [-t MMDDhhmm[[CC]YY][.SS]]  [-dtime]
    [--time={atime, access,use,mtime,modify}] [--date=time]
    [--file=reference-file] [--no-create][--help] [--version]
    -a, --time=atime, --time=access, --time=use:只改变访问时间。
    -c, --no-create:如果目标文件不存在,也不建立空文件。
    -d, --date time是:使用time来代替目前时间。
    -f:为了同BSD版本的touch兼容。
    -m, --time=mtime, --time=modify:只改变修改时间。
    -r, --file reference-file:用文件reference-file的时间来代替当前时间。
    -t MMDDhhmm[[CC]YY][.ss]:使用此种格式的时间来代替当前时间。
    --help:在标准输出上输出帮助信息并退出。
    --version:在标准输出上输出版本信息并退出。
    (3)范例。将当前目录下的文件的时间参数修改为当前时间:
    lark:->touch *
    lark:-> ls -l
    total 1883
   drwx------     2 fangh     users      1024    Sep    21:07  Mail/
   -rw-r--r--      1 fangh     users     71209    Sep    21:07  bak.tar.gz
   drwx------     7 fangh     users      1024    Sep    21:07  circle/
   -rw-rw-r--     1 fangh     users   1208006    Sep    21:07  circle.tgz
   -rw-r--r--      1 fangh     users    378880    Sep    21:07  sec.tar.gz
   -rw-r--r--      1 fangh     userw    252409   Sep    21:07  tcsh.txt
   lark:->      
    85.tr
    (1)简介
    tr:替换或删除字符。
    从标准输入中读取输入,经处理后输出到标准输出。
    (2)部分参数说明
   tr [-cat] [--complement] [--squeeze-repeats] [--truncate-set] [--truncate-set 1] 字符串1字符串2
   tr {-s, --squeeze-repeats} [-c][--complement]字符串
   tr{-d, --delete} [-c] 字符串1
   tr{-d, --delete} {-s, --squeeze-repeats} [-c] [--complement]字符串1字符串2
    -c, --complemen:补足字符串1。
    -d, --delete:删除字符串1而不是替换。
    -s, --squeeze-repeats:将字符串的顺序替换为一个顺序。
    -t, --truncate-set1:将字符串1比字符串二长的地方截断。
    --help:在标准输出上输出帮助信息并退出。
    --version:在标准输出上输出版本信息并退出。
    (3)范例。将输入中的abc替换为ddd:
    lark:->tr abc ddd
    I love abc
    I love ddd
   86.tty
    (1)简介
    tty:显示目前终端所用的tty。
    tty的返回值:
    0:标准输入是一个tty。
    1:标准输入是一个tty。
    2:给出错误参数。
    3:发生写错误
    (2)部分参数说明
    tty [-a] [--silent] [--quiet] [-help] [--version] -s, --silent, --quiet:不输出任何信息,只给出返回值。
    --help:在标准输出上输出帮助信息并退出。
    --version:在标准输出上输出版本信息并退出。
    (3)范例。显示目前终端所用的tty:
    lark:->tty
    /dev/ttypl
    lark:->
    87.umout,mount
   (1)简介
    mount:装载一个文件系统。
    umount:卸下一个文件系统。
   (2)部分参数说明
    mount [-hV]
    mount -a [-fFnrvw] [-t vfstype]
    mount [-fnrvw] [-o options [, . . .]] device | dir
    mount [-fnrvw] [-t vfstype] [-o options] device dir
    umount [-h V]
    umount -a [-n] [-v] [-t vfstypes]
    umount [-n] [-v] special | node. . .
    -V:输出版权信息。
    -h:输出帮助信息。
    -v:校验模式。
    -a:mount在文件/etc/fstab中的所有文件系统。
    -F:同-a联用,并行mount所有文件系统。  
    -f:同-v联用,不作真实mount过程只是检查输出。
    -n:mount文件系统后不久写入文件/etc/mtab。
    -r:将文件系统mount为只读模式。
    -w:将文件系统mount为读写模式。
    -t vfstype:指定文件系统类型。
    现有可mount的系统类型在/usr/scr/linux/fs/filesystems.c中定义:
    minix, ext, ext2, xiafs, hpfs, msdos, umdos, vfat, proc,
   nfs, iso9660, smbfs, ncpfs, affs, ufs, romfs, sysv, xenix
    -o选项:设定mount的一些参数:
    async:文件系统必须被异步写入。
    atime:每次访问时将i节点的访问时间更新。
    auto:自动选择文件系统类型。
    defaults:使用缺省选项suid, dev, exec, auto, nouser, async。
    dev:解释文件系统上的特殊设备文件。
    exec:允许运行文件系统上的可执行文件。
    noatime:每次访问时不将i节点的访问时间更新。
    noauto:禁止自动选择文件系统类型。
    nodev:禁止解释文件系统上的特殊设备文件。
    noexec:禁止运行文件文件系统上的可执行文件。
    nosuid:根本上设定用户ID位和设定组位起作用。
   nouser:禁止非超级用户使用。
   remount:重新mount一个已经mount的文件系统。
   ro:将文件系统mount为只读模式。
   rw:将文件系统mount为读写模式。
   suid:允许设定用户ID位和设定组位起作用。
   sync:文件系统必须被同步写入。
   user:允许非超级用户使用。
   不加参数则列出系统目前mount的文件系统。
    (3)范例。列出系统目前mount的文件系统。
    lark:->mount
    /dev/hdal on / type ext2_(rw)
    none on/ proc type proc(rw)
    /dev/hda3 on/home type ext2(rw)
    /dev/hda2on/usr/local type ext2(rw)
    lark:->
    加载光驱:
    lark:->mount/dev/hdb/mnt
    88.uname
    (1)简介
    uname:显示系统信息。
    (2)部分参数说明
    uname [-snrvma][--sysname][--nodename][--release]
    [--machine][--all][--help][--version]
    -m, --machine:显示机器硬件种类。
    -n, --nodename:显示机器网络节点名。
    -r, --release:显示操作系统发布版本。
    -s, --sysname:显示操作系统名称。
    -v:显示操作系统版本。
    -a, -all:显示上面的所有信息。
    --help:在标准输出上输出帮助信息并退出。
    --version:在标准输出上输出版本信息并退出。
    (3)范例。显示机器lark的全部信息:
    lark:->uname -a
    Linux lark 2.0.30 #3 Tue Jun 24 03:49:52 CDT 1997 I586 unkown
    lark:->
    89.unarj, unzip, lha
    (1)简介
    在DOS下最常用的压缩软件有adj, pkzip和早期的lha,他们产生的压缩文件如何在Linux下展开呢?这就要用到unarj, unzip,lha这三个工具软件了,其用法同其在dos下的同类软件用法几乎一样。只是请注意unarj和lha都是版权软件,是没有源码的,不属于GNU。且unarj和unzip只能解压不能压缩。
    (2)部分参数说明
    unarj 1压缩文件名:查看压缩文件目录。
    unarj x压缩文件名:解开压缩文件。
    unzip -v压缩文件名:查看压缩文件目录。
    unzip -d 压缩文件名:解开压缩文件。
    lha l压缩文件名:查看压缩文件目录。
    lha x压缩文件名:解开压缩文件。
    lha a压缩文件名 源文件名:压缩新文件。
    90.uniq
    (1)简介
    uniq:从一个排好序的文件中删除重复的行。
    (2)部分参数说明
    uniq [-cdu] [-f skip-fields] [-s skip-chars] [-w check-chars]
    [-# skip-fields] [+#skip-chars] [--count]
    [--skip-chars=skip-chars] [--check-chars=check-chars]
    [--help] [-version][输入文件][输出文件]
    -u, --unique:只输出独一无二的行。
    -d, --repeated:只输出重复的行。
    -c, --count:输出重复行的重复次数。
    -number, -f, --skin-fields=number:选择开始比较的域,number为忽略掉的域,各域之间是以TAB或空格键分开的。
    +number, -s, --skip-chars=number;选择开始比较的字符,number为忽略掉的字符。
    -w, --check-chars=number:选择比较多少个字符。
    --help:在标准输出上输出帮助信息并退出。
    --version:在标准输出上输出版本信息并退出。
    如不指定输入文件则以标准输入代替,如不指定输出文件则以标准输出代替。
    (3)范例。处理文件sourcefile,输出到标准输出:
    lark:->cat sourcefile
    abcd
    abcd
   abcde123
    abcd
   lark->uniq -c sourcefile
       2 abcd
       1 abcde123
       1 abcd
    lark:->
    91.uudecode,uuencode
    (1)简介
    uuencode:将一个二进制文件编码为一个文本文件。
   uudecode:将uuencode产生的文件复原。
   在Internet尚未十分发达的时候,很多用户只能使用E-mail,要交换软件的话是一件十分麻烦的事情,因为不能用E-Mail直接传送二进制文件,于是uuencode和uudecode就成为十分有用的两个工具。uuencode产生的文本文件以begin644为开始标志,以end为结束标志,在这中间的就是编码过的文件。编码后的文件将比源文件大35%左右。uuencode产生的文件将输出到标准输出,如要存成文件,请使用管道功能将其重定向到一个磁盘文件中。
    (2)部分参数说明
    uuencode源文件名  编码时使用的文件名
    uudecode 要解码的文件名
    (3)范例。对文件sourcefile进行编码:
    lark:->uuencode sourcefile sf
    begin 664sf
    886)C9'IA8F-D"F%B8V1E,3(S"F%B8V0*'
    end
    lark:->
    将目录temp打包、压缩、编码后mail给用户fangh:
    lark:->tar cvf -./tepm |gzip |uuencode temp.tar.gz |mail fangh
    ./temp/
    ./temp/sourcefil
    lark:->
    92.vi
    (1)简介
    vi:功能强大的UNIX编辑器。
    vi是UNIX世界里最通用的全屏编辑器,所有UNIX机器都提供本编辑器。Linux里提供的是vi的加强板-vim,但是是同vi完全兼容的。vi的原意是“visual”即可视编辑器,用户键入的会立即被显示出来。其强大的编辑功能可能同任何一个最新的编辑器相媲美,学会vi可以让用户在任何一台UNIX机器无论是SUN,HP,AIX,SGI,还是Linux或FreeBSD上都可以得心应手地编辑文件。
    (2)部分参数说明
    只要在命令上键入vi就可以进入vi的编辑环境。
    vi有两种状态,输入状态以及指令状态。用户在输入状态下可以输入文字资料指令状态是用来执行打开文件、存档、离开vi等操作命令,执行vi后首先进入指令状态,此时输入的任何字符都作为指令来处理。输入“vi文件名”则vi自动装入文件或开始一个新文件,vi屏幕的左方会出现波浪号 “-”,代表本行为空行。
    如果进入输入状态呢?以下为相应的指令:
    追加(append):
    a从光标所在位置后面开始追加文字,光标后的文字随追加的文字向后移动。
    A从光标所在列最后面的地方开始追加文字。
   插入(insert):
    i 从光标所在位置前面开始插入文字,光标后的文字随追加的文字向后移动。
    I从光标所在列的第一个非空白字符前面开始插入文字。
    开始(open):
    o在光标所在列下新增一列并进入输入状态。
    O在光标所在列上方新增一列并进入输入状态。
    x删除光标所在字符。
    dd删除光标所在的列。
    r 修改光标所在字符接下来要修正的字符。
    R 进入改写状态,新增文字会覆盖原先文字。
    s删除光标所在字符,并进入输入状态。
    S 删除光标所在的列,并进入输入状态。
    在vi下如何移动光标
   
指令
说明
功能键
0
移动到光标所在列的最前面
[Home]
$
移动到光标所在列的最后面
[End]
[Ctrl] [d]
向下半页

[Ctrl] [f]
向下一页
[PageDown]
[Ctrl] [u]
向上半页

[Ctrl] [b]
向上一页
[PageUp]
H
移动到屏幕的第一列

M
移动到屏幕的中间列

L
移动到屏幕的最后列

b
移动到下个字的第一个字母

w
移动到上个字的第一个字母

e
移动到下个字的最后一个字母

^
移动下游标所在列的第一个非空白字符

n-
减号移动到上一列的第一个非空白字符
前面加上数字可以指定移动到以上n列

n+

nG
加号移动到下一列的第一个非空白字符
前面加上数字可以指定移动到以下n列
直接用数字n加上大写G移动到第n列

fx
Fx
往右移动到第x个字符上
往左移动到第x个字符上

tx
Tx
往右移动到第x个字符前
往左移动到第x个字符前

;
.
配合f&t使用,重复一次
配合f&t使用,反方向重复一次

/string
?string
往右移动到有string的地方
往左移动到有string的地方

n
N
配合/&?使用,重复一次
配合/&?使用,反方向重复一次

n(

n)
左括号移动到句子的最前面
前面加上数字可以指定往前移动n个句子
右括号移动到下个句子的最前面
前面加上数字可以指定往后移动n个句子
句子是以
! . ?三种符号来分割
n{

n}
右括弧移动到段落的最前面
前面加上数字可以指定往前移动n个段落
右括弧移动到下个段落的最前面
前面加上数字可以指定往后移动n个段落
段落是以
段落间的空白列来分割
指令列表如下:
    d  删除(delete)
    y  复制(yank)
    p  放置(put)
    c  修改(change)
    范围可以是下列几项:
    e  光标所在位置到该字的最后一个字母
    w  光标所在位置到下个字的第一个字母
    b  光标所在位置到上个字的第一个字母
    $ 光标所在位置到该列的最后一个字母
    0  光标所在位置到该列的第一个字母
    ) 光标所在位置到下个句子的第一个字母
   (  光标所在位置到该句子的第一个字母
    }  光标所在位置到该段落的最后一个字母
    {  光标所在位置到该段落的第一个字母
    :q  结束编辑(quit)
       如果不想存档而要放弃编辑过的文件则用:q!强制离开
    :w  存档(write)
        其后可加所要存档的名字。
    :wq 即存档后离开。
    zz  功能与;wq相同。
    93.wall
    (1)简介
    wall:向所有用户广播信息。
   (2)部分参数说明
    wall[文件名]
    wall将给定为文件名输出到所有登录用户的屏幕上,如果不给出文件名则以标准输入作为输入,以Ctrl+D作为文件结束符。只有超级用户才能向那些设为屏蔽信息状态的用户的屏幕上输出信息。
    (3)范例。向所有用户广播信息:
    bash # wall
    system will be shutdown in 5 min !!!
    Broadcast Message from root @ lark
                (/dev/ttyp5) at 20:08. . .
    system will be shutdown in min ! ! !
    bash #
    94.wc
    (1)简介
    wc:统计一个文件中的字节数,单词数,行数。
    (2)部分参数说明
   wc [-clw] [--bytes] [--chars] [--lines] [--words] [--help]
      [--version] [文件名列表]
    -c, --bytes, --chars:只输出字节数。
    -w,  -words:只输出单词数。
    -l, --lines:只输出行数。
     --help:在标准输出上输出帮助信息并退出。
    --version:在标准输出上输出版本信息并退出。
    (3)范例
    lark:->wc -c tcsh.txt
    252409 tcsh.txt
    lark:-> wc -w tcsh.txt
     27584 tcsh.txt
  lark;->wc -l tcsh.txt
     5478 tcsh.txt
   lark:->
    95.whereis
    (1)简介
    whereis:定位可执行,帮助文件,源代码文件。
    缺省地whereis在下列目录搜寻文件
    /bin                    /usr/iterviewa/bin/LINUX
    /usr/bin                 /usr/bin/X11
    /etc                    /usr/X11/bin
    /usr/etc                 /usr/X11R5/bin
    /sbin                   /usr/X11R6/bin
    /usr/sbin                /usr/X386/bin
    /usr/games              /usr/local/bin
    /usr/games/bin           /usr/local/etc
    /usr/emacs/etc           /usr/local/sbin
    /usr/lib/emacs/19.22/etc   /usr/local/games
    /usr/lib/emacs/19.23/etc   /usr/local/games/bin
    /usr/lib/emacs/19.24/etc   /usr/local/emacs/etc
    /usr/lib/emacs/19.25/etc   /usr/loacal/Tex/bin
    /usr/lib/emacs/19.26/etc  /usr/loacl/tex/bin
    /usr/lib/emacs/19.27/etc  /usr/local/bin/X11
    /usr/lib/emacs/19.28/etc  /usr/contrib
    /usr/lib/emacs/19.29/etc  /usr/hosts
    /usr/lib/emacs/19.30/etc  /usr/include
    /usr/TeX/bin           /usr/g+ + -include
    /usr/tex/bin  
    (2)部分参数说明
   whereis [-bmsu] [-BMS目录名列表 -f] 文件名列表
    -b:只搜寻可执行文件。
    -m:只搜寻man帮助文件。
    -s:只搜寻源代码文件。
    -u:搜寻上述路径中不属于三种文件中任何一种的文件。
    -B:改变搜寻可执行文件的路径。
    -M:改变搜寻man帮助文件的路径。
    -S:改变搜寻源代码文件的路径。
    (3)范例。查询whereis所在路径:
    lark:->whereis whereis
    whereis;/usr/bin/whereis
    lark:->
    96.who
    (1)简介
    who:查看其他登录的用户。
    (2)部分参数说明
    who [-imqsuwHT][--count][--idle][--heading][-help]
    [--message] [--mesg] [--version][--writable] [file] [ami]
    -m:同whoami和“who am i”。
   -q, --count;只输出用户的登录名和正在使用的用户数目。
    -i, -u, --idle:输出用户发呆的时间,“.”表明用户没有发呆,“old”表明用户发呆超过24小时。
    -H, --heading:输出表头。
   -w, -T, --mesg, --message, --writable:输出用户的信息屏蔽状态。
    +:可写。
    -:不可写。
    ?:不能发现终端设备。
    --help:在标准输出上输出帮助信息并退出。
    --version:在标准输出上输出版本信息并退出。
    (3)范例。列出系统当前用户:
    lark:->who -H
    USER    LINE    LOGIN-TIME    FROM
    chenxy   ttyp2     Sep 29 20:37(hpte2.ihep.ac.cn)
    liubx     ttyp3     Sep 29 15:59(:0.0)
    fangh    ttyp4     Sep 29 19:19 (csun01.ihep.ac.c)
    lark:->
    98.write
    (1)简介
    write:向另外一个用户发信息。
    如果用户不是超级用户,则不能对设定message n的用户发信息,输入完成后,使用Ctrl-D结束。
    (2)部分参数说明
    write user [@host] [ttyname]
   99.zoo
    (1)简介
    zoo:使用Lz方式压缩文件并打包。
   (2)部分参数说明
    zoo {acfDeghHILPTuUvVx}[aAcCdEfghImMnNoOpPqSul:/.@n+ - =]
    打包文件名  文件名列表
    zoo -command 打包文件名 文件名列表
    zoo h
   
选项
描述
专家选项
-add
-extract
-move
-test
-print
-delete
-list
-update
-freshen
-comment
向打包文件中增加文件
从打包文件中解开文件
移动以打包文件中
测试打包文件
从打包文件中解开文件输出到标准输出
从打包文件中删除文件
列出打包文件的目录
更新打包文件中的文件
增加打包文件中的文件
给文件加注解
aP:
x
aMP
xNd
xp
DP
VC
aunP:
aunp:
c
(3)范例。将目前目录下所有文件打包到文件bak.zoo中:
    lark:->zoo a ban./*
    Zoo: ./bak.tar   --(24%)added
    Zoo: ./circle    --(31%)added
    Zoo: ./sec.tar   --(20%)added
    Zoo:./sourcefile --(13%)added
    lark:->
   

 

    GNU公用许可证
    关于拷贝、分发和修改的条款和条件
    0.这种许可证可应用在任何程序或其他包含有通告的工作作品上,这种通告由版权拥有者放置,并通知它可在这种公用许可证的条款下分发。下边的“程序”指的是任何一种程序或作品,而“基于程序的作品”指的是受版权法保护的程序或者任何派生的作品,也就是说,一个包含程序或部分程序的作品,既包含有原封不动的拷贝。又包括修改和/或翻译到另一种语言的副本。(这以后,“翻译”毫无限制地包括在“修改”这个词中)。每个许可证都以“你”作为称呼。
    除了拷贝、分发和修改之外的活动都不包括在这种许可证之中;它们都超出了范围。运行程序的行为并不受限制,只有在程序输出的内容组成了一个基于程序的作品时它才受许可证的限制(与运行程序无关)。它是否正确取决于程序完成的功能。
    1.你可以像你接收程序源代码一样在任何媒体上分发它的原件备份,只要你在每个拷贝的显著位置适当地发布版权通告和担保声明,你可以与参考这个许可证并缺乏保证的通知保持联系;你可以随同程序给程序的其他接收者一份许可证的拷贝。
    你可以因为传送拷贝的行为收费,并且可以任意提供授权保护做为收费的代价。
    2.因此,合成基于程序的作品时,你可以修改程序拷贝或其中任一部分。并且只要你同样满足以下这些条件,你就可在上边第1条款下拷贝和分发这种修改品和作品:
    a)你必须使已修改的文件带有显著的通知,声明你已改变文件及其日期。
    b)你必须使你分发或出版的作品,不管其整体或部分来源于其他什么程序,都应该整体标注为不收费以供第三方基于本许可证条款来使用。
    c)如果已修改的程序在运行时要正常地交互式阅读命令,在以绝大多数普通方法来开始运动这种交互式使用时,你必须使它能打印或显示包括有适当版权通告和无授权担保声明的文档信息(否则,应指出提供了授权担保),同时也应使它声明用户可在这些条件下再分发程序并告诉用户如何查看本许可证的拷贝(例如:如果程序本身是交互式的但不能正常地打印这种声明,你的基于程序的作品并不要求打印这种声明)。
    这些要求做为一个整体应用到已修改的作品上。如果该作品的可定义部分并非来自于程序,并且有理由认为是自身独立的和单独的作品,当你以独立作品分发它们时,那么本许可证及其条款不再适用。但当你以一个基于程序作品的整体或部分分发这些相同部分时,整个作品的分发必须遵守许可证的条款,对于其他许可证的许可将延伸到整体上,并因此对每个部分都不必考虑是谁编写的。
    因此,本许可让的目的不在于声明你对完全由你编写作品的权利;相反;目的只是使用这种权利来控制基于程序的派生或收集作品的分发。
    此外,仅仅非基于程序的另一作品有关在一定存储或分发媒介上的程序(或基于程序的一件作品)的汇集不构成本许可证范围的另外作品。
    3.你可以(或基于它的作品,在第2节中),基于第1和第2节中的条款,以目标代码或可执行形式拷贝和分发程序,只要你也能完成以下任一工作:
    a)伴随程序是完全对应的程序可读的源代码,它必须在一个可为软件交换任意使用的媒介上基于第1和第2的条款被分发。
    b)伴随程序的是书面方式提供的完全机器可读的相应源代码的拷贝,它至少应在3年内有效,应以不超过支付源码分发代价的价格提供给第三方,它应基于第1和第2节的条款在可为软件交换任意使用的媒介上分发。
    c)伴随程序的是你收到用以分发相应源代码的信息(这种替代方案只在非商业性销售和只在以接收到目标代码或可执行状态程序时提供,它应与上述部分一致)。
    对于作品的源代码意味着对作品可任意修改。对于可执行的程序,完整的源代码意味着其所有模块的全部源代码,加上任何有关的接口定义文件,加上用于控制编译和可执行程序安装的脚本程序。但是,做为特殊的例外,分发的源代码不需要包括任何随可执行程序运行的基于操作系统的主要部件(编译器,内核等等)一起正式分发的东西(可以是源代码或二进制形式),除非这些部件本身有可执行程序。
    如果执行程序或目标代码的分发由提供从指定位置对拷贝的访问手段来完成,那么提供从相同地点对源代码拷贝的相同访问手段即与源代码等效分发,即使第三方并不一定要为目标代码来拷贝源代码。
    4.除非此许可证提供了许可,否则你不能拷贝、修改、再注册或分发程序。除了拷贝、修改、再注册或分发程序之外的深度和努力都是不允许的,否则本许可证将自动终止你的权利。
    但是,从你这里基于本许可证已接收到拷贝或权利的团体将不会终止其许可证,只要这些团体完全遵守规定。
    5.只要你还没有签署本许可证,你就不必接受本许可证的规定。但是,没有其他的东西能赋予你修改或分发程序或作品的权限。如果你不接受该许可证,你的所有对程序的操作在法律上是被禁止的。因此,通过对程序(或任何基于程序的作品)的修改或分发,你就表明你接受本许可证以及对程序及基于程序的作品关于拷贝、分发或修改的条款和条件。
   6.每次你再分发程序(或任何基于程序的作品),接收者将自动从初始注册那里获得许可证并按照这些条款和条件拷贝、分发或修改程序。此时你不必给接收者对这些权利的使用强加任何更多的限制。
    你不必对第三方强加对本许可证的服从负责任。
    7.由于法庭判决的结果或违反专利的控诉或其他任何原因(不限于专利问题),如果强加给你的条件(不和是法庭判决、协议或其他的)与本许可证的条件矛盾,他们并不会因该许可证的条件而原谅你。如果你分发程序不能同时满足许可证的条件和其他适当的条件,那么其后果是你就根本不能分发该程序。例如,专利许可证就不会允许那些从你这里直接或间接地获得拷贝的人毫不负责地再分发该程序。例如,专利许可证就不会允许那些从你这里直接或间接地获得拷贝的人毫不负责地再分发该程序,而唯一能让你满足它和该许可证的方法就是完全制止对程序的分发。
    如果在任何特殊环境下本节的任何部分都是无效的或没有效力的,本书的平衡能应用,作为整体本节段将能在其他环境下应用。
    本节的目的并非诱使你违反任何专利或其他财产权利;这一节唯一的目的在于保护免费软件分发系统的完整性,这就是通过公共许可证实践来实现的。许多人已经通过此系统的持续应用做出了巨大的贡献以便实现大范围的软件分发;它取决于著者/制作者决定他或她是否愿意通过其他任何系统分发软件,而不能强迫他/她作出选择。
    本节的目的在于彻底弄清该许可证剩余部分的后果。
    8.如果程序的分发和/或使用通过专利或有版权的接口限制在特定国家内,将程序置于该许可证之下的初始版权持有者将增加除这些国家之外的明显地理限制,因此只允许在那些没被排除在外的国家之中分发。在这种情况下,这个许可证纳入这种限制就如同其编写在许可证的主体之中。
    9.免费软件基金会将随时出版修订后的和/或新版本的公用许可证。这些新版软件与当前版本的软件在思想上很相似,但可能在处理新问题或所关心的细节上不同。
    每个版本都被赋予了一个唯一的版本号。如果程序指定将应用在自身及其以后版本上该许可证的版本号,你就会有免费软件基金会出版的关于那一版及其后继版的下列条款和条件的选项。如果程序没有指定该许可证的版本号,你可以选择免费软件基金会曾经出版的任何版本。
    10.如果你想把部分程序结合到另外的分发条件不同的免费软件里,可以写信给作者征得同意。对于由免费软件基金会拥有版权的软件,可写信给免费软件基金会。有时我们会为此做一些例外。我们的决定取决于由保留所有我们免费软件的免费分发状态和促进软件共享和重用这两大目标。
    没有担保
    11.由于程序注册为不收费,因此对该程序就没有担保达到实际法律允许的程度。否则除非在文字中声明,版本所有者和/或其他团体提供程序时没有任何种类担保,既包括表明的或隐含的,也包括对特殊目的的可销售性和适用性的隐含担保。至于程序的质量和性能的整体风险均在于你自己。如果你想验证程序的错误,你就得承担所有必要的服务、修改或纠错的费用。
    12.除非法律需要或在文字中声明,否则任何版权所有者或其他在以前允许的修改和/或再分发程序的团体,将对任何损失负责,包括任何一般的,特殊的、偶然的或由使用该程序引起的损失后果(包括不受限制的数据的丢失或不精确的数据或由你或第三方团体承担的损失或程序与其他程序的失败操作),即使这些版权所有者或其他团体已被建议有这种损失的可能性。
    条款和条件结束
   如何将这些条款应用到你的新程序中
    如果你开发了一个新程序,并且你想让公众最大可能地使用它,达到这一点的最佳途径就是使它成为免费软件。这样每个人都能在这些条款下再分发和修改它。
    要这样做,就应把下列通知联到程序上,把它们联到每个源文件的开头以充分地表明无担保,这种做法是最安全的。并且每个文件都应至少有“Copyright”行和在何处可发现全部的通告的指示。
    <给出编程者的姓名的行和其完成工作的简要介绍>
   Copyright (C) 19yy <作者姓名>
    This program is free software; you can redistrbute it and/or modify
    it under the tems of the GNU General Public License as published by
   (at you option) any later version.
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.See the
    GNU General Public License for more details.
    You should have received a copy of the GNU General Pulic License
    along with this program;if not, write to the Free Software
    Foundaton, Inc.,675 Mass Ave, Cambridge, MA 02139, USA.
    同样也应加上如何用电子邮件或信件与你联系的信息。
   如果程序是交互式的,在它开始进入交互模式时使其输出一个类似这样的简短通告:
    Gnomovision version 69, Copyright (C) 19yy name of suthor
    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type 'show w'.
    under certain conditions;type 'show c' for details.
    假设的命令'show w'和'show c'应显示公用许可证的适当部分。当然,你使用的命令可以叫做不同于'show w'和'show c'的其他名字,甚至可以是鼠标单击或菜单选项-可以是适合你程序的任何东西。
   同样,如果必要,你应请你的雇主(如果你作为一名编辑人员开展工作)或你的学校来为程序签署'copyright disclaimer',这里有一个例子。请改换其名字:
   Yoyodye, Inc., hereby disclaims all copyright interest in the program
    'Gnomovision'(which makes passes at compilers)written by James Hacker.
    Ty coon, President of Vice
    这个公用许可证不允许将你的程序添加到牟利的程序中。如果你的程序是常规库程序,你可以认为允许牟利的应用程序链接到该库程序是很有用的。如果你想这样做,请使用GNU库公用许可证而不是这里的公用许可证。
   

 

 


第二章 磁盘应用高级配置
2.1  ZIP磁盘
    ZIP磁盘是类似于软盘的可移动式磁盘,不同于软盘的是,它提供了比软盘更大的存储容量,一般是100MB。ZIP磁盘通常用于备份数据,除此之外,它还可以完成其他的许多功能,本节将介绍ZIP磁盘的使用情况。
2.1.1  ZIP磁盘简介
      本节分为四部分,第一部分描述如何设置ZIP磁盘,适用于Linux的RedHat和S1ackware版本。
      第二、第三和第四部分则分别描述如何在ZIP磁盘上安装RedHat 4.2、Slackware  2.2和 Debian  1.2。
2.1.2 设置ZIP磁盘
      (这部分内容适用于RedHat和Slackware版本。)在开始之前先确定用户可以使用ZIP磁盘;在内核中已经支持ppa或是安装了ppa的模块。
      可以用一个简单的方法来检查:
                == > dmesg
      假如dmesg的内容相当长,用户可以用管道输送到more:
              ==> dmesg  | more
      下列是输出的一部分:
              scsi0:PPA driver version  0.26 usina 4-bit mode on port 0x3bc。
              scsi:1 host。
              Vendor: I0MEGA    Model:ZIP 100            ReV:D.08
              Type:   Direct-Access                      ANSI SCSI revision:   02
              Detected scsi  removabled diSk sda at scsio,channel 0,id 6,    lun 0
              SCSl device sda: hdwr sector=512 bytes.Sectors=196608 [96 MB][0.1  GB]
              sda:write Protect is off
              sda:  sdal sda2
      假如用户看到的内容如下所示:
                      scSi:   0 hosts.
                      SCSi:   detected total.
表示用户有SCSI的支持,但没有发现ZIP磁盘。
      2.1.2.1  分区ZIP磁盘
      要分区ZIP磁盘,执行fdisk命令:
              ==> fdisk/dev/sda
      下面举例说明分区表的设置:
              Disk  /dev/sda:     64  headS,     32  sectors,  96  cylinders
              Unlts=cvlinders of 2048  * 512  bytes
              Device  Boot   Begin    Start      End    Blocks   ld  Svstem
           /dev/sdal         l         l         81    82928    83  Linux  native
           /dev/sda2         82        82        96    15360     82  Linux  swap
      2.1.2.2 格式化和安装ZIP磁盘
      在执行fidsk之后,格式化新的分区:
              ==> mke2fs -c/dev/sdal
      最后用户将需要安装ZIP磁盘:
         ==>mount  /dev/sdai /iomega -t ext2
      用户还需要格式化交换分区:
          ==>mkswap  -c /dev/sda2
      2.1.2.3  建立启动磁盘
      因为ppa(打印机端口)版本的ZIP驱动程序不是真正的SCSI设备,即它不是可启动的装置,所以需要一个内核含有ppa支持,而不是模块化的引导磁盘。
      1.设置和制作内核
    首先用户需要设置并制作一个内核,其中要有启动ppa支持的设置,而不只是设置成装入式的模块。
    为了要有ppa的选择,选择SCSI支持:
            SCSI Supp0ort(CONFIG_SCSI) Y/m/n/?
    另外,还要加入SCSI磁盘支持:
            SCSI disk support(CONFIG_BLK_DEV_SD)Y/m/n/?
    最后,在SCSI低级驱动器之下是ppa支持:
            IOMEGA Parallel Port ZIP drive SCSl support (CONFIG_SCSI_PPA)  Y/m/n/?
 注意:再一次提醒用户,确定不要将ppa设置成模块,而应该放在内核中。
    另外,因未使用parport内核补丁程序,ppa驱动程序不允许ZIP磁盘上的被动式端口给打印机使用,用户可能必须在Paral1el printer support项出现时选择N:
          Parallel printer support (CONFIG_PRINTER)  N/y/m/ ?
      设置好内核,编译生成内核文件:
          ==> make  dep:make clean;make zlmaage
    新的内核应该出现在arch/i386/boot/zlmagc文件中。
    2.安装LILO
    以下步骤就是建立LILO的过程,使系统在启动的时候可以使用相应的设备。
    1)建立ext2文件系统
    在磁盘上建立ext2文件系统,使用如下命令:
            ==> mke2fs -t/dev//fdo
    2) 拷贝基本的文件
    接下来是确定有一个目录可做安装点并设置安装软盘文件系统(这儿使用/mnt/fIoppy):
        ==>mount  /dev/fd0  /rnnt/floppy -t ext2
        ==>Cp  /boot/boot.b /fnnt/floppy
        ==>cD  /boot/maP /mnt/floppy
        ==)cp  /usr/src/Linux/arch/i386/boot/zlmaqe /mnt/floppy/vmlinuzDESK
      为了顺利启动,还需要用户设置LILO部分:
    建立LILO的配置文件。首先给在ZIP磁盘上的那些内核建立LILO的配置文件
(/mnt/flopp/li1o/conf)。下面是配置文件的一个例子:
              boot=/dev/fdo
              map=/mnt/floppy/mdp
              install=/mnt/floppy/boot.b
              prompt
              comPact
              timeout=50
              image=/mnt/floppy/vmlinuzLAP
              Iabel=Laptop
              root=/dev/sdal
              read-only
              image=/mnt/floppy/vmlinuzDESK
              label=Desktop
              root=/dev/sdal
              read-only
              image=/mnt/floppy/vmlinuzDBSK
              label=rescue
              root=/dev/hdcl
              read-only
    上面的配置文件中有两个内核,一个是给需要在内核中有数学模拟程序的笔记本型486,另一个是给桌上型计算机用。
      然后,执行LILO命令把系统的引导设置安装到软盘上:
            ==)li1o -C /mnt/floppy/lilo.conf
    LILO被安装到磁盘上后,就可以跳过下面两个步骤。
    3.内核的安装
    新创建的内核拷贝到软盘上:
            ==>cp  arch/i386/boot/zlmage /dev/fdo

            ==> cat arch/i386/boot/zImaqe  >/dev/fdo
    4.设置软盘的根目录和交换区
    内核安装在软盘上后,用户需要把根目录设备设置到ZIP磁盘上:
           ==>rdev  /dev/fdo  /dev/sdal
    然后,执行下面的命令:
            ==>rdev -S/dev/fdo  /dev/sda2
2.1.3 Redhat 4.2的安装
    在安装时,假设使用的是.Kernel 2.30. Imoega ppa(打印机端口版的ZIP机)RedHat 4.2系统。
      2.1.3.1 软件包的安装
      1.要安装的软件包
    在本次安装中,要包含网络的支持。但因为RedHat的X Window网络设置方式,将必须手工调整,或是试着去设置在/etc/sysconfig/目录内的网络设置工作脚本文件。
    在目前版本的Linux系统中,在ZIP磁盘中编译程序是相当慢的,所以用户最好不安装任何开发软件包。
    基于空间的考虑,也选择不安装X Window系统。稍后,用户可以试着去挂上硬盘并建立一个与/usr的符号链接,看看是否可让X Window运行。
    下面以安装的顺序列出本例子中安装的软件包。有星号的表示在RedHat的勘误中有更新。括弧中的则是更新的软件包号码。
    例如Netkit-B-0.09 被更新到NetKit-B-0.l09-8,所以内容将是(使用命令 rpm-
root/iomega-qa):
  l)  setup.1.7.2           2)  pamconfig-0.15-2
  3)  filesystem-1.3.1       4)  MAKEDEV-2.2-9
  5)  adduser-1.7-1      6)  libc-5.3.12-18
 7)  SysVinit-64-8         8)  ash-0.2-8
 9)  ai-2.9b-2             10) libtermcap-2.0.8-4
 11)  bash-1.14.7.1         12)  bc-1.03-6
 13)  bdflush-1.5.5         14)  cpio-2.4.2-4
 15)  cracklib-dicts-2.5-1    16)  tmpwatch-1.2-1
 17)  crontabs-1.5-1       *18)  db-1.85-10(-11)
 19)  dev-2.5.1-1          20)  diffutils-2.7-5
 21)  etcskel-1.3-1         22)  file-3.22-5
 23)  fileutiis-3.16-1       24)  flndutils-4.1-11
 25)  grep-2.5            26)  groff-1.10-8
 *27)  ld.so-1.7.14-(-5)      28) getty ps<2.0.7h-4
29)  gzip-1.2.4-7           30)  mingetty-l.l9.4-3
3l)  initscripts-2.92-1(93-1)   32)  ed-0.2-5
33)  info-3.9-1          34) ncurses-1.9.9e-4
35)  libR++-2.7.1.4-5    *36)  pwdb-0.54-3(-4)
37)  rootfiles-1.5-1        *38)  pam-0.57-2(一4)
39)  redhat-release-4.2-1     40)  less-321-3
41)  mount-2.51-2          42)  zlib-1.0.4-1
43)  rpm-2.3.11-1          44)  e2fsprogs-1.110-0
45)  sysklogd-1.3-15          46)  tar-1.11.8-11
47)  passwd-0.50-7          48)  gawk-3.0.2-1
49)  gdbm-1.7.3-8            50)gpm-1.10-8
51)  hdparm-3.1-2          52) kbd-0.91
53)  slang-0.9937-2         54)  newt-0.8-1
55)  kbdconfig-1.4-1        56) ncompress-4.2.4-7
*57) sh-utils-1.16-4(-5)     58)  procinfo-0.9-1
*59) logrotate-2.3-,(4-1)  60)  tILO-0.19-1
61)  losettup-2.51-2       62) Linuxthreads-0.5-1
*63)  mkinitrd-1.6-1(7-1)  64) mailcap-1.0-3
*65)  man-1.h-5(j-1)    66)mt-st-o.4-2
67)  modules-2.0.0-5      68)  mailx-5.5.kw-6
69)   net-tools-1.32.alpha-2   70)  procmail-3.10
71)   procps-1.11           72)  psmisc-11-4
73)   quota-1.55-4           74) readline-2.0-10
75)   sed.2.05-6            76)  setconsole-1.0-1
77)  sendmail-8.8.5-4       78)  shadow-utils-960530-6
79)  stat-1.5-5            80)  tcsh-6.06-10
81)  termcap-9.12.6-5      82)  textutils-1.22-1
83)  time-1.7-1            84)  timeconfig-1.8-1
85)  uiil-Linux-2.5-38      86)  vim-4.5-2
87)  vixie-cron-3.0.1-14    88)  which-1.0-5
89)  zoneinfo-96i-4         90)  tcp_wrappers-7.5-1
*91)  NeiKit-B-0.09-6(-8)   *92)  lpr-o.18-1(19-1)
*93)  bind-4.9.5Pl-2(9.6.1)    *94)  bind-utils-4.9.5pl-2(9.6.1)
*95)  wu-ftpd-2.4.2b12-(b15-1)  96) anonftp-2.3-3
97)  zip-2.1.1               98)  unzip-5.12-5
99)  statserial-1.1-7        100)  minicom-1.75-2
101)  lrzsz-0.12.14-1       102)  dip-3.3.7o-9
103)  ppp-2.2.0f-3           104) portmap-4.0-3
 105)perl-5.003-8  *106)  traceroute-1.0.4bsd-2(1.a5-1)
 *107)  elm-2.4.25-7(-)    108) 1ynx-2.6-2
  109)  ncfip-2.3.0-5       110) pine-3.95-2
  111)  rdate-0.960923-1    112) apache-1.1.3-3
 *113) nfs-server-2.2betal6-7  *114) nfs-server-clients-2.2beta16-7
     (2.2beta16-甸            (2.2betal6-8)
      2.更新和勘误
    正如许多RedHa使用者所知,部分的软件包可能被发现有一些安全漏洞,或有其他会引起争议的问题。因此RedHat的这些软件包被更新和勘误。上例中已经列出了那些用户安装且有更新的软件包,并且在更新的软件包前标上了星号。
    参考关于更新软件包的RedHai网页可获得更详细的信息:
     
注意:在更新那些软件包前,必须执行命令Idconfig。
    2.1.3.2  使用rpm而不用glint安装
     在rpm中,使用-root选项去指定加载目录为安装置的根目录。因为安装前和安装后的执行脚本文件基于不同的根目录而无法正确地被执行,现己发现有许多软件包无法安装。所以使用--noscripts选项:
??==>rpm  --root/iomega   -i --noscripts  PACKAGE.i386.rpm
    肯定许多人会注意到,将得到一个错误信息,如下所示:
        failed to open  /iomega/var/lib/rpm/packages.rpm
        error: cannot open/iomega/ var/lib/rpm/packages.rpmPm
所以需要建立var/lib/rpm目录:
      ==>mkdir/iomega/var mkdir/iomega/var/lib mkdi/iomega/var/1ib/rpm
    2.1.3.3  pamconfig与pam的执行顺序
    假如有人试图安装pamconfig,它将会显示关于pam的相关属性错误,当用户再试着安装pam,它会显示关于Pamconfig的相关属性错误。
    用户可以强迫pamconfig被安装。
    强迫pamconfig被安装需要使用--nodeps选项,如:
      ?==>rPm --root /iomega -i --nodeps --noscripts pamconfig-o.51-2
    2.1.3.4  软件包安装后的问题
    所有的内容都安装后,该磁盘的功能还不完整。
    假如用户试着启动,会得到两个错误:
    第一个是/etc/ld.so.cache文件不存在;
    第二个是找不到libc.so.5。
        ? /etc/ld.so.cache
        为了建立这个文件,当ZIP磁盘正在安装时,用户将必须执行ldconfig命令:
            ==>chroot  /iomega: /sbin/ldconfig
         ?libc.so.5
        为了解决找不到程序库的问题,用户必须建立一个安装执行脚本文件时应该建立的符号链接:
            ==>cd  /iomeha/lib;  In -slibc.so.5.3.12  Libc.So.5
        ?  设置root的密码
        正如执行ldconfig一样,用户也要为新系统改变或建立root的密码:
            ==> chroot  /iomega: passwd  root
      ?安装程序所建立的内容
     当查看RedHat 4.2光盘或硬盘时,会看到一些内容:安装程序的程序源代码。用户还会发现在/misc/src/install目录下有一个有用的net.c文件。
      在net.c文件里面,还会发现安装程序执行时建立的那些文件。大部分只是产生网络应用(这就是被称为net.C的原因),即使没有网卡,用户仍然可用localhost当作网络。这些文件包括:
          /etv/hosts
          /etC/HOSTNAME
          /etC/resoly.conf
         /etc/sysconfig/network
        /etc/sysconfig/network-scripts/ifcg-etho
或用户可能有的其他网络装置。
      2.1.3.5 网络的设置
      本节中,将要配置3COM3C595快速以太网网卡。
      首先,需要一个主机名字;例如:dash-dot.wig.0rg。有名字而没有Ip地址也是无意义的,所以用了一个非因特网保留的可用的网址192.168.10.0。即使主机名称通常存在/etc/HOSTNAME中,RedHat也会在/etc/sysconfig/network中检查这个名称,所以从etc/sysconfig/network文件开始执行。
      /etc/sysconfig/network的样本:
                  NETWORKING=yes
                  HOSTNME=dash-dot
                  DOMAINNAME=wig.org
                  GATEWAY=
                  GATEWAYDEV=etho
                  NSI=192.668.10.7
      拷贝基本上相同的数据到/etc/HOSTNAME/etc/resolv.conf和/etc/hosts中。
        /etc/HOSTNAME:
                  daSh-dot.wig.org
        /etc/resolv.conf:
                  Search Wig.org
                  nameserver ns.wig.org
        /etc/hosts:
                  127.0.0.1 1ocdIhost
                  192.168.10.99 dash-dot.wig.org dash-dot
                  192.168.10.7 ns.wig.org ns
      RedHat在/etc/sysconfig/network-scripts的执行脚本文件中设置所有的网络装置。
    网络的设置通常先由安装程序建立,所以必须手动建立这些配置文件。它们全是由ifcfg-xxx开头,其中xxx是ifconfig启动的网络接口,如pppO和eth0等等。在这本例中,必须建立一个ifcfg-etho文件,内容包括:
                      DEVICE=etho
                      ONBOOT=yes
                      BOOTPROTO=none
                      BROADCAST=192.168.10.255
                      NETNORK=192.168.10.0
                      NETMSK=255.255.0
                      IPADDR=192.168.10.99
    最后,为了让这个设置会成功,还要在/etc/sysconfig/network-scripts目录下,执行如下命令:
              ==>?/ifup ifcfq-etho boat
    假如接口被设成在系统启动时自动启动,这将会启动设置网络接口的脚本文件。
2.1.4  slackware  2.2的安装
      下面简单介绍Slackware  2.2的安装。
      2.1.4.1 需求
      ZIP磁盘和计算机
      ?有ZIP支持的内核
      ZIP HOWTO文档(推荐)
      ?格式化的1.44英寸软盘
      ?一到两个小时的时间
      2.1.4.2安装
    最简单的开始方法是直接安装slackware到ZIP磁盘中。因为Slackware是一个比RedHat小的发行版本,而且它可能比较容易除去不想要的软件包。
    安装Slackware 2.2的步骤与前面讲的安装RedHat 4.2的步骤是一样的,用户可以参阅3.10.3节的内容。
      2.1.4.3安装内容
    最难的部分是决定安装内容。显然用户需要A系列(大约8MB),其他就可随便了。
    最后,用户可以把Slackware版缩小到70MB安装,其中包含gcc/g++、perl、XIIR6(不是全部)、sendmail和联机手册文件,最后大约剩下10MB给使用者文件用。
2.1.5 设立/etc/fstab
    (适合于RedHat和Slackware发行版本)
    在重新启动前,最后一件需要做的事是在将会成为根分区的文件系统上设立fstab文件。下面是/iomega/etc/fsiab文件的样本,用户在这个文件中至少要包含如下的内容:
                /dev/sdal       /      ext2     defaults   l   l
               /dev/sda2     none         swap        SW
               none          /proc    proc            defaults    l   1
    保存该文件并存档,就可以用新制作的引导磁盘重新启动系统。
2.1. 6  Debian的安装
    下面介绍Debian的安装。
    2.1.6.1 需求
    ?连接打印机端口的ZIP磁盘
    ?两张1.44MB的空白软盘
    ?一套完整的Debian安装磁盘(假如用户不记得如何制作这些磁盘,复习Debian的安装文件说明)
    ?几个小时的时间
    2.1.6.2 制作修复盘
    Debian修复盘是一种SYSLinux式的引导磁盘,它使用和一个特殊的引导程序加载器(boot loader)去避免装入DOS。下面讲述制作修复盘的具体步骤:
    1.使用dd(或是DOS中的RAWRITE)创建新的修复盘
     本部分的内容在前面都已经讲过了,假如用户不记得如何做,复习Debian的安装文件。
     2.创建一个有ZIP ppa支持的内核
        创建一个有ZIP ppa支持的内核,用户还需要规划msdos、fat、minix、ext2fs和procfs文件系统。
        同时设立用户想最终在ZIP磁盘上安装的模块。
        内核规划好后,用下面的命令:
                  ==>make dep:make  clean
                  ==>make  bzlmage
    重新创建内核。
        创建模块用下面的命令:
                    ==>make modules
注意:确定用make bzImage命令,而不是make ZImage命令。
        3.安装新的修复盘
        使用的命令是:
                    ==> fdmount fdo
    或:
                  ?==> mount/dev/fdo/mnt
        4.把内核拷贝到软盘
     这一步很简单,只要用cp命令将Linux内核(在i386的平台上,它位于arch/i386/boot/bzlmage中)拷贝到软盘上,软盆上的目标文件是/mnt/Linux:
                #cp  arch/i386/boot/bZIrnaqe  /mnt/Linux
        5.编辑脚本文件rdev.sh
        用用户最喜欢的编辑器编辑位于修复盘上的脚本文件rdev.sh。
        修改最后一行:
        即把:
                  'rdev/mnt/Linux/dev/ramO'
    改成:
                'rdev/mnt/Linux/dev/sdal'
        用户也需要把目录名/mnt/Linux改成正确的路径名。例如,如果用户安装的软盘在  /fd0,必须把/mnt/Linux修改为成/fdo/Linux:
        如果用户使用CShel1,则使用如下命令。
        #setenv PATH $PATH :/fdo”/Linus
        6.执行修改后的脚本文件rdev.sh
        在用户编辑位于修复盘上的脚本文件rdev.sh后,就可以执行该文件了:
             ==>./rdev.sh
      2.1.6.3 把基本系统安装到ZIP磁盘
    用修改后的修复盘启动。假如一切正常,用户将会得到熟悉的Debian的菜单式的安装过程,但它现在已经可以识别用户的ppaZIP磁盘了。
    这一步骤与将系统安装到硬盘上是相同的,但需要将/dev/sdal安装成根目录并将/dev/sda2设置为交换区。
      2.1.6.4创建启动盘
    用户可以创建启动盘,可以使用Debian安装过程中的Create Boot Disk(创建启动盘)选项来创建启动盘。
      2.1.6.5重新启动系统
    插入启动盘并在安装菜单里选择Reboot(重启动)选项。
      2.1.6.6  安装在前面步骤中创建的模块
    用户还可以加载包含用户创建的内核的硬盘分区。改变目录到正确的目录并执行make modules install命令。
      下面是详细的步骤:
              ==> mount /dev/hda2  /mnt
              ==> cd /mnt/usr/src/Linux
               make modules_install


2.2 在Linux上启动quota
    在Linux系统上,管理员可以控制某个用户对硬盘的使用,例如限制demo用户最多占用硬盘上的10MB空间。这种工作可以通过Linux系统的quota机制来实现。下面就看一看如何设置quota。
2.2.1  quota简介
    quota可以让用户从两方面指定硬盘的储存限制:
    1.使用者所能够支配的索引节点数。
    2.使用者可以取用的硬盘分区块数。
    quota的功能是强制使用者在大部分的时间中保持在他们的硬盘使用限制之下,取消他们在系统上无限制地使用硬盘空间的能力。
    quota是以使用者和文件系统为基础的。如果使用者在一个以上的文件系统上建立文件,那么必须在每一文件系统上分别设置quota。
2.2.2  quota目前在Linux上的情况
    quota的支持自从1.3.8x版开始已经包含到内核之中,如果用户的系统不支持quota,那么建议用户更新内核。
    到目前为止,quota只能在ext2文件系统上运行。
    在Linux上使用quota的功能需求
      1.Linux内核
      支持quota的Linux内核可以从以下站点取得:
          http://sunsite.unc.edu/pub/Linux/kernel/v2.0
      2. quota软件
    视用户的Linux发行软件包而定,在用户的系统上可能已经装好,也可能没有quota软件。quota软件的程序源代码可以从如下站点取得:
          ftp://ftp.funet.fi/pub/Linux/PEOPLE/Linus/subsystenls/quota/al1.tar.qz
2.2.3  配置quota
    下面介绍如何配置quota。
    2.2.3.1  配置用户的内核
    重新配置用户的内核并且对这个选项回答y以加入quota的支持:
            quota  support(coNFIG_QUOTA)[n] y
    重新配置用户的内核需要执行下面的命令:
              cd  /usr/src/Linux
            make config
    2.2.3.2 编译并安装quota软件
    如果用户的系统上还没有quota软件,则需要安装该软件。
    quota软件的程序源代码可以从如下站点取得:
          ftp://ftp.funet.fi/pub/Linux/PEOPLE/Linus/subsystelns/quota/a11.tar.gz
    2.2.3.3 设置
    修改用户系统的启动脚本文件以检查quota并且在启动时打开quota,下例为某个脚本程序:
          #Check  quota  and then turn quota on。
          if  [-x/usr/sbin/quotacheck  ]
          then
          echo“Checking quotas.This may take some time。”
          usf/sbin/quotacheck -avuq
          echO“D0ne。”
          fi
          if[-x /usr/sbin/quotaon]
          then
          echo“Turnlnq on quota。”
         /usr/sbin/quotaon -avug
          fi
         注意:一定要在加载用户/etc/fstab里的文件系统之后的打开quota,否则quota将不会运行。
       2.2.3.4 修改/etc/fstab文件
    为了在系统每次启动的时候都使quota有效,需要修改/etc/fstab文件。
    没有启用quota的分区一般如下所示:
            /dev/hdal      /     ext2          defaults            1 1
            /dev/hda2      /uSr  ext2          defaults            l l
    要在文件系统上加入quota,则在包含“defaults”的第四个项后面加上“usrquota”:
            /dev/hdal      /    ext2    defaults               l    l
            /dev/hda2  /usr    ext2    defaults,  usrquota   1    l
    如果用户需要在一个文件系统中的用户组quota支持,将“usrquota”改为“grpquota”:
            /dev/hda1    /          eXt2        default3            1   1
            /dev/hda2    /usr       ext2        defaultS,  grpquota  l   l
    如果要同时支持quota与用户组quota,则修改如下:
   /dev/hdal      /    ext2         defaults                     l   l
   /deV/hda2     /usr   ext2      defaults,usrquota,  grpquota   l   l
    2.2.3.5  建立quota.user文件
    quota记录文件quota.uscr应该由root拥有,而且只有root有读写的权限而其他任何人都没有。
    以root的身份登录。进入用户想要后用quoia的分区的最上层,并且按如下方式建立quota.user文件:
          touch  /partition/quota.user
            touch /partition/quota.qroup
            chmod  600  /partition/quota.user
            chmod  600  /partitlon/quota.group
     2.2.3.6 重新启动
    现在重新启动系统以便让用户所做的改变生效。
    同时注意以后对于用户还想要启用quota的其他分区只需要最后三步,即:修改/ete/fsto.b文件、建立quota.use.文件及重新启动。
2.2.4 高级设置
    为使用者及用户组指定quota这项操作需要执行edquota命令。(详情参考 manedquota)。
    通常在编辑quota之前先使用quotacheck并加上参数-avug,以取得最新的文件系统的使用状况。这只是一个人的习惯问题,并非必要步骤。
    2.2.4.1 为特定使用者指定quota
    举个例子。在本系统上有一个名叫bob的使用者。使用edquota bob命令将会把用户带进vi(或是在用户的$EDITOR环境变量中所指定的编辑器)以便为使用者bob编辑在每个启用quota的分区上的quota:
            quotas  for  user  bob:
        /dev/hda2: block in  use:2594,  limits (soft=5120, hard=640D)
        inodes in use:  356,  limits  (soft=1000,hard=1500)
    “blocks in use”是使用者在某个分区上已经使用的区块总数(以数据块为单位)。“inodes in use”是使用者在某个分区上所拥有的总数文件。
    2.2.4.2 为特定用户组指定quota
    举个例子,系统上有一个用户组games。
    使用“edquota-g games”,把用户带入 vi以便为games 用户组编辑 quota:
          quotas for group  games:
        /dev/hda4:blockS in use:5799,limits (soft=8000,hard=10000)
      inodes in use:1454,limits (soft=3000,hard=4000)
    2.2.4.3 为一群使用者指定相同的quota值
    为了快速地为系统上的一群使用者,例如100名,设置和bob相同的quota值,首先以手动编辑bob 的quota有关信息,然后执行如下命令:
      edquota -p bob 'awk -F:  '$3>499>{print $1}'/etc/passwd'
    这里假设用户使用csh,并且用户的使用者UID从500开始。
    除了edquota 之外,用户应该熟悉如下三个专有名词:软性限制、硬性限制和缓冲期间。
      1.软性限制
    一般来说,软性限制指出quoia使用者在分区上拥有的硬盘用量总数。
      2.硬性限制
    硬性限制只在设置了缓冲冲期间时才会运行。它指出硬盘用量的绝对限制,quota使用
者不能超越他的硬性限制。
      3.缓冲期间
    缓冲期间是对quota使用者实行软性限制之前的时间限制。可以使用的时间单位是秒、分、小时、州、日。星期和月。用户使用“edquota-t”命令后,将会得到如下信息:
          Time  units  may be: days,hours,minutes, or seconds
          Grace  period  before  enforcing soft limits for users:
        /dev/hda2: b1ock grace  period: 0  days,  file  grace period:0 days
      把0 days这个部分修改为用户觉得合适的任意期限。
      2.2.4.4 其他的quota命令
1. quotacheck
    quotachecket 用来扫描文件系统的硬盘用量,并更新quota.user这个quota记录文件到最新的状态。建议定期在系统后动时执行quotacheck或通过crom任务每隔一段时间(例如一星期)执行一次。
      2.repquota
    repquota产生文件系统的有关quotat的信息摘要。如下是repquota的输出例子:
            #     repquota -a
            B1ock  1imits          File  limits
            User     used    soft    hard  grace     used soft hard grace
            root   -175419     0     0    14679   0   0
            bin    --  18000    0       0   735 0     0
           uucp  --  729       0     0      23  0     0
           man   --   57      0   0       10   0    0
           userl -- 13046  15360  19200           806 1500 2250
          user2  -- 2838    5120  6400          377 1000  1500
2.2.5  quotaon和quotaoff
      quoiaon是用来打开quota的命令,quotaoff则是将其关闭。实际上两者很相似。它们分别是在系统启动与关机时执行的。
        quotaon的使用方法是:
                ?#quotaon       /f:  lesystem
        quotaoff的使用方法是:
                # quotaoff  /filesystem
        更详细的信息可以查阅这两个命令的联机帮助手册。

 

 

 

 


第三章 网络应用高级配置
3.1 在Linux机器上设置串行通信设备
    本节将介绍如何在Linux系统上设置串行通信设备。
3.1.1 串行端口的名称
    4个串行设备对应COM1~COM4这4个端口,如下所示:
    /dev/cua0,/dev/ttyS0  (CoMl)  address  0x3f8  1RQ  4
    /dev/cua1,/dev/ttysl  (CoM2)  address  0x2f8  1RQ  3
    /dev/cua2,/dev/ttyS2  (COM3)  address  0x3e8  1RQ  4
    /dev/cua3,/dev/ttyS3  (CoM4)  address  0x2e8  1RQ  3
   /dev/ttySN设备给进来的连接所使用,而/dev/cuaN设备则给出去的连接所使用。N是串行端口号码。在本例中,是以ttySO对应coM1,以ttySl对应COM2,以ttyS2对应COM3,以ttyS3对应COM4。
     Linux系统的某些安装方式会另外建立2个设备--调制解调器使用的/dev/modem和鼠标使用的/dev/mouse。它们分别是调制解调器实际设备文件的链接和鼠标设备文件的链接。
    强烈建议用户不要使用这些链接,如果用户打算用调制解调器接受拨号,却使用了/dev/modem设备文件,那么用户将会因为加锁文件无法正确运行而遇到困难。如果要使用这些链接,一定要使它们指向正确的设备,即该设备文件符号链接的目标文件是正确的。
      3.1.1.1 在/dev里的串行设备的主要和次要号码
      在/dev 里的串行设备的主要和次要号码如下所示:
      /dev/ttyS0 major  4, minor  64  /dev/cua0  major 5, minor  64
      /dev/ttySl major  4,minor  65  /dev/cual  major 5, minor  65
      /dev/ttyS2 major  4,minor  66  /dev/cua2  major 5,minor  66
      /dev/ttyS3 major  4,minor  67  /dev/cua3  major 5,minor  67
    要注意所有的发行软件包都应该正确地建立了这些设备。
    下面介绍在/dev下建立设备的方法。如果用户没有其中的一个设备,必须自己用mknod命令来建立它。
    假定用户需要建立设备,可以使用如下命令:
            Linux# mknod -m 666  /dev/cua0  c 5 64
            Linux# mknod -m 666  /dev/ttyS0 c 4 64
    可以取得MAKEDEV 这个脚本文件,一般FTP站点上都会有。这个脚本文件简化了设备的建立过程。例如,如果用户需要建立ttyS0设备,则应该输入:
              Linux# cd/deV
              Llnux# MAKEDEV ttYS0
    3.1.1.2 多用户卡的注意事项
    多用户卡所使用的设备视用户具体使用哪种多用户卡而定。这些详细信息列在随附于setserial程序的rc.serial文件中。
    用户可能会需要建立这些设备。用mknod命令或是取得的MAKEDEV脚本文件都可以。多用户卡所用设备是以加上“64 +端口号”来建立的。所以,如果用户想为ttyS17建立设备,就应该输入:
            Linux# mknod -m 666/deV/cual7 c 5 81
            Linux# mknod -m 666/dev/ttyS17 c 4 81
注意到“64+17=81”。如果使用MAKEDEV 脚本文件,应该输入:
            Linux# cd/dev
            LinuX# MAKEDEV ttyS17
3.1.2 getty
    getty是在用户登录UNIX机器的时候处理登录过程的一个程序。在Linux系统上经常使用的版本有3种:agetty、getty_ps和mgetty。
      3.1.2.1  getty_ps
    这个getty版本由Paul Sutcliffe Jr.(paul@devon.Ins.pa.us)所编写,目前由 Kris
Gleason()来维护。最新的版本是2.0.7e,它兼容于任何旧的版本。大部分Linux安装软件包都包含 getty ps,并且会把getty_ps安装成程序文件/sbin/getty。
    getty_ps软件包包含两个部分:getty 由主控台和终端设备所使用;uugetty由调制解调器所使用。
      3.1.2.2 mgetty
    mgetty是由Gert Doering所编写的getty版本。除了允许拨入之外,mgetty也通过随附的sendfax程序提供传真支持。mgetty+sendfax 0.22是这个软件包的最新版本。这套mgetty的文件写得相当好,因而不需要再补充什么。更详尽的信息,请参考它的安装说明。
      3.1.2.3  agetty
    agetty是第三种getty程序,由w.Z.Venema()所编写。它getty的简单版本。
3.1.3  setseria1
     setseria1是可以让用户查看并修改串行设备各种属性(包括它们所使用的端口地址、中断以及其他串行端口选项)的程序。
    setserial刚开始是由Rick  Sladkdy编写,然后由目前维护它的Ted  T'so()修改过。最新的的版本是2.10版,可以在Linux  FTP站点上找到。可以通过执行不加参数的setserial命令来获取该软件的版本信息。
    在Linux系统启动时,只有ttyS{0-3}会以默认的IRQ4和IRQ3来进行配置。所以,如果有由其他网卡提供的串行端口或是ttyS{0-3}使用非标准的硬件中断(IRQ),必须用这个程序来配置这些串行端口。
    要了解该命令的所有选项,请参考它的联机手册。
3.1.4 拨号
    用户要利用调制解调器拨号,进而与服务器建立连接,需要通过一系列的步骤,下面就来看一看整个连接过程。
    3.1.4.1 硬件需求
    确定用户拥有正确的连接线。调制解调器需要一条直接的连接线,没有任何跳线。要确定接口的形式是对的,应把用户的调制解调器接到其中一个串行端口上。如果需要关于这个调制解调器的辅助说明,请参考调制解调器手册。
    内置式调制解调器注意事项如下:
    内置式调制解调器不需要连接线,也不需要串行端口,只要给它配置一个没有被使用的硬件中断,并且配置该端口的输入/输出地址即可。如果出现问题,请参考调制解调器手册。
   如果想要将内置式调制解调器设在ttyS3可能会遇到一些问题。如果Linux没有检测到设在ttyS3上的内置式调制解调器,可以使用setserial程序来设置,然后调制解调器才会正常运行。设在ttyS{0-2}上的内置式调制解调器在检测时应该不会有任何问题。
   3.1.4.2 与调制解调器联络
   在使用复杂的通信程序之前,先以kermit或其他简单的通信程序来测试这些设置。因为版权的关系,kermit并没有随着商业发行软件包一起发行。可以从sunsite.unc.edu:/pub/tinux/apps/comm及其镜像站点上找到最新的kermit版本。
   例如,要是调制解调器设在ttyS3设备上;而且可以接受38 400bps传输速率,可以按如下方法做:
    Linux# kermit
    C一Kermit 5A(188),23 Nov 92, POSIX
   Type ? or HELP for heIP
   C-Kermit>set line/dev/cua3
   C-Kermit>set speed 38400
   dev/cua3, 38400  bps
   C-Kermit>C
   Connecting to/dev/cud3,SPeed 38400.
   The escape character iS Ctrl-\(ASCII 28,FS)
   Type the escape character followed  by C to get back,
   or followed by ? to See other options。
   AT
   OK
   -\-C
   (Back at Linux)
   C-Kermit>quit
   Tinux#
   如果调制解调器对at命令集有响应,那么可以假定调制解调器能正确运行。
   当使用调制解调器对外拨号时,将调制解调器设置到它所能支持的最高速度。必须用setserial 程序将用户的串行端口设置到更高的速度,然后在通信程序中将速度设置到38 400bps。
    3.1.4.3 配置用来对外拨号的调制解调器
    只要对外拨号,就可以以用户需要的任意方式配置调制解调器。如果用户计划用调制解调器来接受拨号,那么必须将调制解调器配置成与getty的速度选项在相同的速度设置下。所以,如果想要在38 400bps的速度下执行getty,在配置调制解调器的时候应将速度设成38 400bps。这样做是为了避免计算机与调制解调器之间的速度不匹配。
    如果要查看结果响应,就可以设QO(这会显示结果响应)。如果在调制解调器上进行这个设置,需要以at命令指定寄存器名称。利用kermit或其他通信软件连接到调制解调器,然后输入如下命令:
          ATQO
    如果调制解调器响应OK,那么寄存器就已经被设置。
    如果用户想查看自己正在输入什么,可以设置El(本地响应命令)。如果调制解调器具有数据压缩能力,用户要想启动它,就可以参考用户的调制解调器手册以获得更多的帮助说明以及完整的选项列表。
    3.1.4.4 硬件流量控制
    如果调制解调器支持硬件流量控制(RTS/CTS),建议使用它。特别是对于支持数据压缩的调制解调器。
    启动调制解调器的硬件流量控制最好是在启动系统的时候做,将命令放在
/etc/rc.d/rc.local 或是/etc/rc.d/rc.serial文件中。用户需要对每一个想要启动硬件流量控制的串行端口执行下列操作:
    Stty crtsctS     用户必须在调制解调器上启动RTC/CTS流量控制。操作方法参考调制解调器手册,因为不同的调制解调器有不同的操作方法。如果用户的调制解调器支持内置式脚本文件,则要确定将配置存入用户的调制解调器。
3.1.5 用来接受拨号以及对外拨号的调制解调器的配置
   要用来接受拨号以及对外拨号,那么必须设置调制解调器(再一次对调制解调器使用at命令集):
    El 本地响应命令。
    Q0 回报结果响应。
    Vl 开启冗长模式。
    S0=0 不要接听(uugetty以WAITFOR选项来处理)。
    如果还没有正确地设置,放在配置文件里的拨号代码可能会失败,因而使整个程序中途退出。配置文件还有其他选项:
      &CI DCD 只有在连接以后才开启。
      &S0 DSR 永远为开启。
    DTR 开启/关闭/重置调制解调器。
    这些选项会影响调制解调器有关开始以及结束拨号的执行。
    如果调制解调器不支持内置式脚本文件,可以通过在配置文件中的拨号代码来设置这些内容。具体的方法见下文。有些调制解调器以DIP开关来设定寄存器,也要确定这些设置是正确的。
      3.1.5.1安装getty_ps
    依照默认值,getty_ps将会按Linux的文件系统标准来配置,即二进制文件将会放在/sbin目录下,且配置文件将会命名为/ect/conf.{uu}getty.ttySN。系统也会假定加锁文件将要放到/var/lock目录下。要确定用户有/var/lock这个目录。
     如果用户不想依照Linux的文件系统标准配置,二进制文件将会放到/etc目录下,配置文件将会命名为/ect/default/{uu}getty.ttySN,加锁文件则将会放到/usr/spool/uucp目录下。如果用户使用UUCP,那么建议这样做,因为如果把加锁文件放到UUCP无法找到的地方,将会出现问题。
    getty_ps使用syslogd守护进程来记录信息。如果目前没有执行它,参阅syslogd(1)以及syslog.conf(5)的联机手册来设置syslogd。信息会优先以LOG_AUYH记录,错误信息使用LOG_ERR记录,而排除错误信息使用LOG_DEBUG记录。
    如果不想使用syslogd,可以编辑在getty_ps源文件里的tune.h,将日志文件名的宏去掉,默认文件名为/var/adm/getty.log。
    决定是否要依照Linux的文件系统标准以及是否使用syslogd后,相应地编辑在getty_ps原始目录下的tune.h文件以及Makefile文件。然后,根据说明安装。
     所有的getty都是指getty_PS,uugety 则是指getty_ps 软件包里的uugetty。
      3.1.5.2 设置uugetty
    为了能从调制解调器进行拨号,需要用uugetty。
    uugetty执行加锁文件检查。更新/etc/gettydefs,以便为调制解调器增加记录(注意到这里的记录仅供参考,它们并非固定速度):
      # Modem  entrles
      384OO# B38Q00 CS8 # B38400 SANE-ISTRIP HUPCL @L @B I09in:
      #19200
      19200# B19200 CS8 # Bl9200 SANE -ISTRIP @L @B Iogin:
      #9600
      9600# B9600  CS8 #  B9600  SANE -1STRIP HUPCL @L @B login:
      #2400
      2400# B2400  CS8 # B2400  SANE-ISTRIP HUPCL @L @B login:
      #1200
      1200# B1200 C83 # B1200 SANE-ISTRIP HUPCL @L @B login:
      #300
     300# B300 C38 # B300 SANE -ISTRIP HUPCL @L @B login: #38400
    如果用户将调制解调器设成RTS/CTS,进行硬件流量控制,那么用户可以将CRTSCTS加到这些记录中:
    # 38400 fixed speed with hardware flow control
    F38400# B38400 CS8 CRTSCTS # B38400 SANE -ISTRIP HUPCL CRTSCTS
    @L @B l09in:#F38400
    # 19200 Fixed speed with hardware flow  control
    FI9200# B19200 CS8 CRTSCTS # B19200 SANE -ISTRIP HUPCL CRTSCTS
    @L @B login: #F19200
    # 9600 fixed speed with hardware flow contfol
    F9600 # B9600 CS8 CRTSCTS # B9600 SANE -ISTRIP HUPCL CRTSCTS
   @L @B login: #F9600
    如果需要,用户可以让uugetty在登录时的欢迎信息中显示有趣的内容。在本例中,显示系统名称、串行线路和目前的传输率。用户也可以加入其他的内容。
    @B The current (evaluated at the  time the @B is seen) bps  rate.
    @D The current date,in MM/DD/YY.
    @L The serial line to which getty is attached.
    @S The svstemname。
    @T The current time, in HH:MM:SS(24一hour).
    @U The  number of currently signed-on users.This is a
    count of the number of entries in the/etc/utmp file
    that have a non-null ut_name field.
    @V The value of VERSION,aS given in the defaults file.
    TO display a single character,use either'\@'or'@@'.
    接下来,确定调制解调器所接的串行端口有输出及输入的设备。
    如果调制解调器设在ttyS3,用户将会需要/dev/cua3和/dev/ttyS3这两个设备文件。
    如果没有正确的设备,用户可以通过命令mknod来创建这些设备。mkinod的具体使用可参阅它的联机手册。
     3.1.5.3 定制 uugetty
     许多参数可以用未改变端口的属性,以分别对每一个端口使用不同配置文件的方式来实现的。
    /etc/conf.uugetty文件会被所有的uugetty所使用,而/etc/conf.uugetty.ttySN文件只由一个端口使用。默认的配置文件范例可以在getty_ps的源文件里找到,这在绝大部分的Linux发行软件包里都有,要注意的是,如果用户用的是比较旧的getty版本(比2.0.7e版还旧),或者是用户没有依照Linux的文件系统标准配置,那么默认的文件将会是/etc/default/uugetty.ttySN。
   正确的/etc/conf.uugetty.ttyS3文件应如下所示:
          # sample uugetty configuration file for a Hayes compatible
          # modem tO allow
          # inconing modem connections
          #
          # alternate lock file tO check..if this lock file eXistS,
          # then uugetty is
          # restarted so that the modem is re-initialized
          ALTLOCK=cua3
          ALTLINE=CUa3
          # line to initialize
          INITLINE=cua3
          # timeout tO disconnect if idle...
          TINEOUT=60
          # modem initialization string...
          # format: (chat sequence)
          INIT=””AT\r OK\r\n
          wAITFOR=RING
          C0NNECT=””ATA\r CONNECT\s\A
          # this line sets the time tQ delay befOre sending the loqin
          # banner
          DELAY=l
          # DEBUG=010
    将下面一行内容加到/etc/inittab文件中,uugetty就会在用户的串行设备上等待用户的连接请求:
          S3:456:respawn:/sbin/uugetty ttyS3 F38400 vt100
    重新启动程序:
           Linux#  init q
    对于在文件inittab中的速度参数,最好使用调制解调器所能支持的最高传输率。因此,在文件inittab中使用38 400bps。
    以后Linux将会随时监视用户的串行端口是否有连接。
    uugetty还有更多的选项,参阅geity (IM)联机手册可获得更详细的信息。
    3.1.5.4  Supra注意事项
    Supra 调制解调器对于DCD的处理与其他调制解调器不同。如果用户使用Supra,必须要设置&C0而不是&CI。此外,还必须设置&D2,以便正确地处理DTR信号。
3.1.6 设置终端连接到PC机上
    下面讲述如何设置终端连接到PC机上。
    3.1.6.1 硬件需求
    确定有一条正确的连接线--哑终端连接线就可。确定用户使用的是串行端口,DB25或是DB9接口,而个是并行端口。
    如果使用的并不是完全的哑终端连接线,用户可能要使用下面的方法:
    在用户计算机这边的接口上,把RTS与CTS接在一起,并把DSR、DCD和DTR接在一起。用这个方法,当计算机要求一个正确的硬件连接联络信号时,它就可以得到该信号(从它自己发出的)。
    现在用户已经有正确的连接线,把终端连接到了用户的计算机上。如果可以,使用户的终端忽略调制解调器控制信号,试看把终端设置为:9 600bps的速度、8位数据传输模式以及无奇偶校验位。
    3.1.6.2 设置getty
    参考前文将getty_ps安装好。在/eic/gettydefs文件中增加一个给getty用来连接用户终端的记录:
     # 384OO bps Dumb Terminal  entry
     DT38400 # B38400  CS8 CLOAL# B38400 SANE -1STRIP CLOCAL# @S @Lloqin:
     #DT38400
     # 19200 bps Dutmb Terminal entry
     DT19200 # B19200 CS8 CLoCAL # B19200 SANE -ISTRIP  OL login:
     #DT19200
     # 9600 bpS Dumb Termina1 entry
     DT9600 # B9600 CS8 CLOCAL # B9600 SANE -ISTRIP CLOCAL @L1ogin:
     #DT9600
    如果需要,用户可以让getty在登录的欢迎信息中上显示一些有趣的内容。在本例中,显示系统名称以及串行线路。用户也可以加入其他的内容:
      @B The current (evaluated at the time the @B is seen) bps rate.
      @D The current date,in MM/DD/YY.
      @L The serial  line to which getty is attached.
      @S The SyStem  name.
      @T The current time,in HH: MM: SS (24-hour).
     @U  The number of currently signed-on users. This is a count of the  nunlber  af  entries in the/etc/utmp file that have a non-null  ut_name field。
     @V  The value of VERSION,as given in the defaults file?
     To  display a single,,use .
    编辑用户的/eic/inittab文件,使getty在串行端口上执行(依照用户自己的环境:端口、速度和默认终端模式,将正确的信息填入):
        s1:456:respawn:/sbin/getty ttySI DT9600 vtl00
      重新启动程序:
      Linux# init q
    现在用户应该会在终端上看到登录提示。有时用户需要按回车键几次才能使终端显示登录提示。
      3.1.6.3 将Pc机设置成终端的注意事项
   许多人将其pc机设置成终端连接到Linux机器上。例如,旧的8088或是286 PC非常适用于这种情况。用户需要的只是一个包含适合让终端-个人计算机(Terminal-pC)使用的DOS调制解调器,以及让终端-个人计算机执行的通信程序。kermit是一个非常好的仿真终端程序,用户可以在atsun.cc.co1umbia.edu/pub/ftp/ermit站点上找到适合于现有的任何操作系统使用的各种kermit版本。使用其他的DOS通信程序,例如telix或prpcomm也会有好的效果。
3.1.7 使用两个以上的串行设备
    除非用户要使用3个或更多的串行设备(假定用户没有多用户卡),否则可以跳过本节。
    用户可以使用的串行端口数目受限于必须使用的硬件中断要求以及端口输入/输出地址的数目。这并不是Linux的限制,而是PC机和硬件的限制。
    必须给每一个串行设备指定中断和端口地址。串行设备是串行端口、内置式调制解调器或多用户卡。
      3.1.7.1 选择串行设备的中断
    用户的PC机一般会将ttySO和ttys2设在IRQ4,而将ttysI和ttyS3设在IRQ3。如果使用两个以上的串行设备,用户必须放弃其中的一个中断。
    可以从用户的并行端口重新指定一个中断。用户的PC机一般会设置IRQ5或IRQ7作为用户的并行端口,也有少数人同时使用两个并行端口。用户可以给串行设备重新指定其中的一个中断,并且仍然能顺利地使用并行端口。这时用户需要用到setserial程序。
    此外,用户必须调整主板上的跳线设置,查看主板的说明文件,设置用户想要给每个端口使用的IRQ。
    用户将需要做些设置,使每个串行设备都有且只有一个中断。以/etc/rc.local文件中所用的设置为例,在启动系统时用户应该在某个文件中加入下面的内容:
          /etc/setserial /dev/cua0  IRQ 3      # my serial mouse
          /etc/setserlal /dev/cuaI  IRQ 4      # my Wyse dumb terminal
          /etc/setserial /dev/cua2  1RQ 5      # my Zoom modem
          /etc/setserial /dev/cua3  1RQ 9      # my USR  modem
    标准的IRQ设定如下:
            IRQ O           计时器通道0
            1RQ 1           键盘
            IRQ 2           磁带控制器2
            1RQ 3           串行口2
            iRQ 4           串行口1
            iRQ 5           并行口2
            1RO 6           软盘驱动器
            IRQ 7           并行口2
            1RQ 8           实时时钟
            IRQ 9           重定向到IRQ2
            1RQ 10          保留
            iRQ 1l          保留
            inQ 12          保留
            IRQ 13          数学协处理器
            IRQ 14          硬盘控制器
            IRQ 15          保留
    在选择中断时,要确定中断没有被主板或其他网卡所使用。IRQ是2、3、4、5或7。“保留”的意思是目前没有什么设备在标准情况下会固定使用这些硬件中断。注意到IRQ2与IRQ9是一样的,用户可以称它为2或9,串行驱动程序会接受该设置的。
如果有一张16位的串行卡,也可以使用编号为10、11、12或15的硬件中断。
要确定用户使用的IRQ不是0、1、6、8、13或14,它们是用户的主板所使用的。                                                                        
    3.1.7.2 设置串行设备的地址
    接下来,用户必须设置端日地址。查看用户主板手册的跳线设置。就像中断,每个地址只能有一个串行设备。用户的端口通常会如下配置:
            ttyS0  address  xx3f8
            ttySl  address  0x2f8
            ttyS2  address  0x3e8
            ttyS3  address  0x2e8
    选择用户想要给每一个串行设备使用的地址并且以此来进行跳线设置。例如:将调制解调器设在ttyS3,鼠标设在ttuS0,而终端设在ttyS2。
    当重新启动时,Linux应该会在用户所设置的地址查看到用户的串行端口。Linux所查看到的IRQ可能与用户跳线设置的IRQ不相符。不必担心,Linux在它启动的时候不做任何IRQ检测。使用setserial程序指明串行端口使用哪个IRQ。
3.1.8将串行端口设到较高的速度
    本节介绍通过通信程序或getty程序使用调制解调器时,如何确定使用速度。
    ?如果使用的调制解调器比9 600bps(V.32)调制解调器还要慢,那么将速度设到调制解调器所能支持的最高速度。例如300bps、1 200bps或2 400bps。
    ?如果使用9 600bps(V.32)的调制解调器,并且支持V.42bis数据压缩。就使用38 400bps作为用户串行端口使用的速度。V.42bis的压缩比是4:1,此实际的传输速率是“4*9600=38 400”。
    ?如果使用14 400bps(V.32bis)的调制解调器,并且支持v.42bis数据压缩的功能,可以使用setserial程序,加上spd hi标志将用户的串行端口配置成使用57 600bps(4*14 400=57 600)的速度。
    ?如果使用28 800bps(v.FC或V.34)的调制解调器,则使用spd_vhi标志(4*28 800=115 200)。
    然后,在用户的通信程序或是/etc/inittab文件中使用38 400作为速度设置。这是目前能设的最高速度。要确定有16550A通用非同步接收转换器(UART)。
    将用户所做的修改放进/etc/rc.d/rc.serial或/etc/rc.local文件,以便在系统启动时执行。
    例如,在/etc/rc.d/rc.local文件中设置ttyS3为115 200 bps,如下所示:
             /sbln/setserial/dev/cua3 spd vhi
3.1.9 通信程序及工具
    一旦用户使每件事都能正确运行,就可能会想要找些更高级的程序。如果所使用的发行软件包里没有,那么需要到站点上下载相应的软件包。
    这些软件包包括:
        ecu--   一套通信程序。
        minicom-类似telix的通信程序。
        procomm-procommish 包含zmodem的通信程序。
        sevon-以X为基础环境的通信程序。
        xc-xcomm 通信软件包。这些程序比单独的kermit提供更多的功能,包括电话目录和自动拨号等。
       term-term 在一条串行线路上多重模拟连接。连接方式包括rlogin、telnet、ftp、
finRer、rdate、xmosaic和tredir。
     tredir是让用户能够重新引导远端的TCP/IP端口到本地主机上的特殊程序。它允许远端的NNTP和SMTP存取。term的优点是它完全在使用者的空间中执行,即它不需要内核的支持或是系统管理上的支持(像sLIP所做的一样)。
     screen多区段会话的程序。这个程序的功能就像虚拟控制台。
     callback-这个程序会使调制解调器从用户刚刚被中断的地方立刻回拨给用户。
     mgetty+fax 处理传真事务,并且提供一个getty功能。
     zyXEL ZyXEL U-1496调制解调器的控制程序。它处理接受拨号、回拨的保密、
        传真和语音信箱功能。
    其他程序可以在下面的站点找到:
        sunsite.unc.edu /pub/Linux/svstem/Serial

        sunsite.unc.edu /pub/Linux/apps/comm
或是其镜像站点。
3.1.10 串行通信程序使用技巧
    以下介绍一些很有用的串行通信软件。
    3.1.10.1  kermit和zmodem
    要在kermit下使用zmodem,则需将下列内容加入到用户的Kermrc文件中:
           define  rz !rZ  /dev/cua3
           define  sz ! sZ\%0>/dev/cua3     要正确地定义端口的名称,使用时只需在kermit的提示符下键入“rz”或“sz<文件名>”即可。
    3.1.10.2 自动设置终端模式
    如果要在登录的时候自动设置终端模式,需把终端的模式加入到/etc/inittab文件的记录中。如果有一台vtl00终端在ttysl上,需要在getty命令行中加上“vtl00”:
          sl:456:respawn:/sbin/getty ttySI DT9600 vtl00
    也可以从sunsite.unc.edu/pub/Linux/system/Terminal-management或其镜像站卓取得tset程序。可以参阅随附于tset的文件学习它的使用方法。
    tset可以在用户登录的时候测试终端的特性。
    3.1.10.3 串行连接下的彩色Is
    如果IS因为彩色特性而扰乱了用户的终端模拟,可以把它关掉。    
    Ls--co1or和IS--co1our都使用彩色特性。有些安装方式使得IS默认为使用彩色。检查/etc/profi1e文件和/etc/cshrc文件中的IS别名。如果不想修改系统默认值,用户也可以给IS设别名IS-no-color。
      3.1.10.4 从终端所连接的打印机进行打印
    由Garrett D'Amore()所编写的vtprint程序可以完成该功能。
    这个程序可以从下面的站点获取:
            ftp?sdsu?edu/pub/vtprint
也可以从下面的站点获取:
           http ://www?sdsu?edu/~garrett
    vtprint允许用户从远端UNIX主机打印至连接到他们本地终端或终端模拟器的打印机,它使得在家里打印文件等工作变得很方便。
      3.1.10.5 Linux能不能自动地配置串行设备
    要让Linux在启动的时候自动地检测并且设置串行设备,则把如下一行:
              /sbin/setserial/dev/cuaN auto IRQ  skip_test autoconfiq
加到/etc/rc.d/rc.local文件或/etc/rc.d/rc.serial文件中。
    对每一个用户希望自动配置的串行端口都要那样做。要确定所给的设备真正存在于计算机上。
      3.1.10.6 多用户卡的注意事项
    有关卡的地址和IRQ的信息可查阅setserial程序所附的rc.serial文件。它包含很多关于多用户卡的信息,如输入/输出地址和设备名称等。

 

 

 


3.2 设置与别的系统共享调制解调器
   本节将描述在TCP/IP网络上的Linux系统中如何设置与别的系统共享安装在Linux系统上的调制解调器。
3.2.1服务器端
    假设在Linux服务器上安装以下两者之一的调制解调器:
    1.一台接在/dev/ttySx上的调制解调器;
    2.在/dev/ttyIx上接有综合业务数据网(1SDN)的调制解调器。
    以下用perl脚本所写的几行是实现与其他系统共享调制解调器的基本程序:
            $ cat/usr/sbin/modemd
            #!/usr/bin/perl
            select((select (STDOUT),$|=1)[$]);
            select((select(STDIN),$|=1)([$]);
            exec'cu-S 115200 -1/dev/ttySl’;
            die '$0:Cant exec  cu: $!\n’;
    如果有一个客户端连接到适当的连接端口,则守护进程inetd会启动调制解调器守护进程modemd。modemd只是使用cu命令把标准输入和标准输出与套接字句柄连接起来,然后让cu命令来控制调制解调器。如果没有cu命令,可以在UUCP软件包中找到它。
    用户也必须修改inetd的设置,把modemd加入到其中,这个配置文件通常都放在文件/etc/inetd.conf中,加入的内容如下所示:
     #
     #modem daemon
     #
     modem  stream  tcp  nowait  root/usr/sbin/tcpd/usr/sbin/modemd/dev/ttyS1
    为了能使modemd可以运行,必须在文件/etc/services里加上如下的内容:
            modem             2006/tcp           modemd
    在这个例子中用modemd守护进程把连接端口2006当作服务程序,其中的端口号用户可以任意指定成还未被用过的端口号。在这些都完成后,用户还需要重新启动守护进程inetd,使用下面的命令可以重新启动守护进程inetd:
    $ ps  |  grep  inetd               194? S            0:00 /usr/sbin/inetd
              $kill -HUP 194
    至此,用户的服务器端已经可以接受客户端的请求及为客户端服务了,用户可以用下面的命令检查实际的效果:
      $ telnet  localhost  modem
      Trying  l27.0.0.1
      Connected to locdlho5t.
      Escape  character iS'^]'
    接着,用户可以连上调制解调器,也可以用调制解调器的一些at命令来确认一下:
      atz
      atZ
      OK
      atil
      ati1
      Linux ISDN
      OK
      telnet>quit
      $
    除了可以用perl脚本来充当调制解调器服务器外,程序mserver也可以完成相同的功能,该程序可以从下面的站点获取:
        
也可以用Archie或其他搜索引擎来找到这个程序。
3.2.2 客户端
    在本节中将只讲述在windows系统上的设置。服务器端设置好后,客户端PC机的COM端口还需要被重新引导到TCP/IP通信协议上,完成这个功能的比较好的程序是位于的DialOut/IP。
    DialOut/IP会使用虚拟COM端口来连上调制解调器,Windows中的程序可以使用这个虚拟COM端口。除了一些传真应用程序或是其他需要直接存取UART控制线的程序之外,许多客户端程序(包括windows 95的〖拨号网络1〗)都可以像真的有一台调制解调器接在这些程序所在的机器上面一样地去使用调制解调器。
    Dialout/IP可以被设置成提供Telnet的通信协议,但是这个特性只能应用在调制解调器的某些产品上。
注意:虽然命令名“拔出(DialOut/IP)”(DialOut)/IP也可以被应用程序用来接收拔进来电话。
    在站点上有一个供用户下载但仅可使用一至二周的全功能版本,安装及设置过程由设置程序处理,详细的安装信息在README.TXT文件中。当用户运行DialOut/Ip时,必须输入共享的调制解调器的IP地址和端口号。
    DialOut/IP是仅允许被一台调制解调器所使用的商业产品,也就是用户所付出的代价依用户所使用的共享调制解调器的数量而定,许可协议(license)中说用户可以把DialOut/IP安装在所有可以存取共享调制解调器的个人计算机上。
3.2.3 安全问题
    如果在用户的局域网络中只有一台调制解调器给所有机器分享,那么就没有安全问题。然而,如果用户的局域网络上有一台或多台的机器被设置成调制解调器服务器且也接上了因特网,那就必须考虑安全问题了,否则任何人都可以用telnet you host name modem命令随意拨打国际长途电话。
    为了保护用户的调制解调器服务器不被非法的存取,建议用户安装和设置
TCP Wrapper。TCP wrapper是一个软件包,可以从下面的站点获取:
              ftp://ftp.cert.org
有关该软件包的安装和使用,可以参考该软件包的帮助信息。

 

 

 

 

 

 

3.3  ADSM备份系统
      这部分将描述如何在Linux/i386之中针对商业性的ADSM备份系统去安装和使用客户端。
      AOSM是一个由IBM开发的以网络为基础的备份系统,它应用广泛,其中包含各式各样的系统(各种UNIX、windows系列、Novel1、Macintosh和windows NT系统)。但是目前没有Linux版本。
      在Linux下,必须使用sco二进制文档,用户需要安装iBCS2模拟器来执行ADSM。本节内容针对的是ADSM V2R1。
3.3.1 安装iBCS模块
    要使用ADSM备份系统,必须先安装iBCS模块。
    iBCS2模块可以从以下站点取得:
              ftp://sx-11.mlt.edu/pub/Linux/BETA/ibcs2
    如果Linux内核版本是1.2.13,相应的文件是ibcs-1.2-950721.tar.gz,解开它后安装补丁程序:ibcs-1.2-950808.patchl和ibcs-1.2-950828.patch2。
    再键入make命令,然后使用insmod命令来安装iBCS模块。
    针对一个2.0内核版本,取得ibcs-2.0-960610.tar.gz,解开它放在一个合适的放置,进入到此目录中,使用下面的补丁程序:
              ---iBCSemul/ipc.c.oriq  Wed  Jan  l5  21:  32:  15  1997
              +++iBCSemul/ipc.C       Wed  Jan  l5  21:  32:  31  1997
              @@ -212,7  +212,7 @@
              switch  (command) { 
                            case U_SEMCTL;
                      cmd=ibCS_sem_trans  (arg3);
          -          arg4=(union  semun*)  qet_syscal1_parameter(regs,4);
          +          arg4=(Union semun*)   (((unsiqned long*)  reqs->esp)+(5));
                  is_p=(struct ibcs_semld_ds*) get_fs_1ong  (arg4->buf);
                # ifdef IBCS_TRAcE
                  if  ((ibcs_trace & TRACE_API ) | |   ibcs_func_P_>trace)
    然后,复制CONF1G.1386文件到CONFIG,键入make命令。
    如果用户还没有下面的设备,按照下列命令建立必要的设备文件:
                #cd  /dev
                #In_S nuII  XOR
               # mknod  socksys  c  30  0
                # mknod  spx  c  30  1
3.3.2 安装ADSM客户端
      sco\二进制文档由三个归档文件(tar)提供。
    改变路径到根目录,根据用户的策略设置umask值,然后在一个目录下解开它们(如根目录)。在目录/tmp下会找到相应的程序文件,执行该文件。
      这时必须手动编辑文件/usr/adsm/dsm.sys/usr/adsm/dsm.opt。
      在文件dsm.sys中,重要的参数详细说明如下:
      Servername 服务器名称
      TCPServeraddress 服务器DNS全名
      NODename用户自己的主机名
      在文件dsm.opt中,必须要详细说明如下参数:
      Server如同前面的描述
      Followsymbolic 要或不要跟随符号链接点
      subdir支持子目录(通常需要它)
      domain文件系统备份
    这时必须从/etc/fstab文件创建一个与SCO相兼容的/eic/mnttab文件。可以使用下面的perl程序文件fstab2mnttab来完成这个步骤:
              # !/usr/bin/perl
              $mnttab_Struct=“a32 a32  I  L”;
          open (MTAB,“/etc/mtab”)|| die“Cannot open /etc/mtab:$!\n”;
          open(MNTTAB,“>/etc/mnttab”)|| die“Cannot open /etc/mnttab:  $!\n”;
                While(){
                    next if/pid/;
                    chop:
                    /^(\S*)\S(\S*)\s(s*)\S.*$/;
                $device=$1;
                $mountpt=$2;
                $fstype=$3;
            if($fstype ne“fs”&& $fstype ne“proc”) {   $mnttab_rec=
                pack($mnttab_struct,$device,$mountpt, 0x9d2f,time());
            syswrite  (NNTTAB,$mnttab_rec,72):
            print “Made entry for:$device $mountpt $fStype\n”:
            close(MNTTAB);
            exit 0;
3.3.3 执行客户端
    在ADSM备份系统中,有两种客户端:
      1. dsm
        该客户端是Xll界面。
      2.dsmc
        该客户端是命令行界面。
    具体的使用,在该程序中有详细的说明,例如:
        dsmc scheduie -quiet  2.&1  >/dev/null &
3.3.4 己知的问题
    但是,SCO只能处理少于8个字符的主机名。如果用户的主机名更长,或者用Internet全名,还需要在/usr/adsm/dsm.sys中的NoDename行详细说明系统的机器名。
    如果使用DISPLAY  变量,必须提供服务器的 DNs 全名(如:DlSPLAY=host.ful1.domain:0 而不是DISPLAY=host0)。

 

第四章 图形界面系统配置
4.1 X Window
4.1.1 介 绍
    不用命令行的界面,用基于X Window的图形用户界面也可以与Linux系统进行交互。采用图形用户界面,用户可以使用图标、窗口和菜单来发布命令和运行程序。与普通的基于个人计算机的图形用户界面,如Windows或者是Mac OS不同的是,Linux和UNIX系统把图形用户界面分成三个独立的部分:
        1. X Window
        2.窗口管理器
        3.程序/文件管理器
    X Window是底层的标准图形工具,它提供所有基本的图形操作,如打开窗口或显示图像。窗口管理器负责处理窗口的操作,如改变大小或者移动窗口等。不同的窗口管理器在窗口被显示的方法上有所不同,使用不同的边框和窗口菜单。但是所有的窗口都采用了同样的底层X Window图形工具。文件管理器负责处理文件的操作,它使用图标、菜单和一个程序管理器来运行程序,通常允许用户从一个工具条上选取常用的文件操作命令。与窗口管理器不同,文件和程序管理器可能在外观和性能上差别很大。
    Caldera 桌面是一个商业的文件和程序管理器,caldera桌面和xfm文件管理器都可以运行在fvwm窗口管理器上。
    所有Linux和UNIX系统都使用同样标准的底层X Window图形工具。这意味着在大多数情况下,基于 X Window的程序可以在任何一个窗口管理器和桌面的系统上运行。
    基于X Window的软件常常可以在Linux和UNIX的FTP站点上看到,它们通常标注为X11。可以下载这些文件,然后在caldera桌面上的fvwm下直接运行它们。
    有些文件是Linux的二进制形式,用户可以下载。安装,然后直接运行,另一些是源码的形式。一些应用程序,如Motif等,可能还需要一些特别的库。
4.1.2 窗口、文件和窗口管理器
    使用窗口管理器,用户可以用鼠标来完成如打开、关闭、改变大小和移动窗口等的窗口操作。有些窗口管理器可以用在Linux系统上,还有一些更通用的窗口管理器,如fvwm、fvwm95、Less Tif(mwm)、Motif(mwm)、Xview(olwm)和AfterStep(afterstep)。
    fvwm是Robert Nation写的用于绝大多数Linux系统上的主窗口管理器。它使用简单、功能强大,而且灵活。Fvwm 95是一个有着类似于windows95的用户界面的fvwm。它使用与window 95操作系统相类似的窗口、任务栏和菜单。Less Tif是Motif的免费的姊妹程序。所有Motif的应用程序都可以在tess Tif下运行。Motif是一个像UNIX一样的商业产品。Xview是Linux版本的sun系统的OpenLook界面(不是Solaris)。AfterStep是用于NeXT操作系统上的NeXTSTEP界面的姊妹程序。
    窗口管理器在底层的X Window图形工具之上运行。X Window实际上提供了允许用户打开、移动和关闭窗口以及显示菜单和选择图标这样的基本操作。fvwm禾,Xview用各自的方式管理这些操作,提供不同的界面以供选择。所有的窗口管理器,无论它们外观上有多么大的差别,都是使用X Window工具。从这个意义上说,Linux不是只限定于一种图形用户界面。在同一个Linux系统上,用户可以使用fvwm窗口管理器,也可以使用Xview,甚至使用Motif。
    窗口管理器一般仅仅提供非常基本的窗口管理操作,如打开、移动和改变窗口大小。文件管理器和程序管理器使用户能用图标和菜单来管理和运行程序。使用文件管理器,用户可以在不同的目录窗口中拷贝、移动或者删除文件。使用程序管理器,用户可以用任务栏和程序图标来执行命令和运行程序。一个桌面程序利用文件管理器和程序管理器的功能来提供一个有菜单和图标的虚拟的桌面用以访问文件和管理程序。
    有些窗口管理器还包括了桌面的一些特点。在Linux系统上使用的fvwm多数不但具有窗口管理功能还具有程序管理功能。fvwm具有一个任务栏和一个工作区菜单,使用菜单或者任务栏,用户可以在fvwm中直接运行任何X Window程序。其他的窗口管理器,如fvwm95,具有和Windows 95一样的任务栏和初始菜单的桌面界面。fvwm95 基于fvwm2、使用Windows 95的界面。除了支持程序管理功能,fvwm95还将支持一个名叫Exp1orer的文件管理器。使用frwm95,用户可以像在Windows 95中那样显示文件和目录的图标。
4.1.3 启动和退出X Window窗口管理器和桌面
    在命令行方式下输入starx启动X Window。X Window服务器将在窗口管理器运行之后加载。把Linux系统设置为在Caldera桌面中自动加载窗口管理器。桌面也是运行在窗口管理器里的。Caldera加载窗口管理器后,可以看到:Caldera是棕色或灰色的窗口。窗口上方是任务栏,窗口中显示的是程序的图标。可以用鼠标来访问菜单、打开窗口以及运行程序。
    从文件菜单中选择退出桌面选项可以退出Caldera桌面。像许多窗口应用程序一样,Caldera桌面在屏幕的上方有一个菜单栏。单击文件菜单就可以弹出其下拉菜单。退出桌面是其中最后一个选项。
    当选择退出桌面选项的时候,Linux系统仅关闭Caldera桌面,不关闭fvwm窗口管理器。
    fvwm窗口管理器在屏幕上的背景为深蓝色。用户必须退出窗口管理器才能关闭X Window退回到Linux系统的命令行方式界面。
    要关闭fvwm窗口管理器,首先要打开fvwm 工作区菜单。在深蓝色的背景的任意处单击鼠标就可以弹出这个菜单。用户必须单击菜单然后把选中条往下拉一点才能让这个菜单停留在屏幕上。选择这个菜单的最后一项,打开一个子菜单,该于菜单中的一个选项就是退出桌面选项。选择此选项就会退出窗口管理器和X Window,回到有$提示符的命令行方式界面。在命令行方式下,用户随时可以通过输入starx命令来启动fvwm。
    用户还可以在fvwm中启动其他的窗口管理器、桌面或fvewm的任务栏。在工作区菜单中选择桌面选项,将打开一个窗口管理器的子菜单。单击这个菜单中的开启任务选项将显示fvwm的任务栏,该任务栏上有一些X Window 经常访问的程序的图标,如万维网浏览器。选中Start Looking Glass选项可以开启Caldera 桌面(Looking Glass是Caldera桌面的另一个名字)。选中窗口管理器选项将弹出一个子菜单,该子菜单上列出系统上已经安装的其他窗口管理器。单击于菜单中的其他的窗口管理器选项可以启动相应的窗口管理器。
4.1.4 X Window系统中的设置工具
    在X Window系统中,运行相应的设置工具,用户可以安装软件、设置打印机或添加新用户等。
    XF86Setup是用来设置X Window系统的工具,就像glint用来安装软件一样。lisa是一个基于菜单的管理工具,它包括了系统管理的各个方面。在Linux的Redhat发行版本中还有一些基于窗口的工具,可以方便地设置打印机、用户和文件系统。
    这些工具可以从caldera桌面、fvwm菜单或fvwm任务栏中启动。为访问这些工具,首先必须以root身份登录。然后用startx命令启动 X Window。在Caldera桌面上可以看到一个管理工具图标。双击管理工具图标,打开管理工具窗口,在窗口中可以看到每个工具的图标。
4.1.5 xterm
    在Linux的窗口管理器中可以打开终端窗口,终端窗口提供一个标准的命令行界面。用户可以在此窗口的命令行上的提示符后面输入带有参数的命令。这个终端窗口是Xterm程序创建的。在fvwm的任务栏、程序菜单或者像Caldera这样的桌面中可以开启一个终端窗口。
    fvm任务栏上有一个xterm按钮,单击它即可打开一个xterm窗口。从fvwm 工作区菜单中选中Shells,再从其子菜单中选中xterm选项也可以打开一个xterm窗口。要从Caldera桌面上打开一个终端窗口,只要双击桌面左上角图标栏里的终端图标即可。
    一旦打开,终端窗口就显示一个shell提示符,一般是“$”,用户可以像在命令行方式下一样输入命令。输入的Linux命令的执行结果将在终端的窗口上显示,其后是一个Shel1提示符,表明命令行的开始。必须注意的是,终端窗口必须是活动窗口才能使用它的命令行。如果它不是活动窗口,需要移动鼠标指针使它变为活动窗口。
    xterm窗口支持几个文字处理特性。在窗口的左边是一个滚动条,使用它可以向前滚动来查看显示过的文本。当文本位于xterm窗口的一页时,可以通过回滚来查看它。如果想显示某个目录下的文件,而文件过多,无法在一个窗口内显示的时候,这个功能就很有用处。
    xterm 窗口中能进行拷贝和粘贴文本操作,方法是:用鼠标的左键来拷贝文本,用第二个键来粘贴文本。用户可以拷贝先前显示的任何文本,如先前的命令或命令的输出结果。要拷贝文本,可以按住鼠标的左键拖动到目标处松开鼠标。双击将选择一个单词,三击将选择一行句子。如果想扩大选择范围,用鼠标的第三个按键。选择好文本后,单击鼠标的第二个按键,就可自动把文本粘贴至命令行的末尾。重复单击就会重复粘贴。在不同的终端窗口间也可以拷贝和粘贴。(术语“第二个”和“第三个鼠标按键”可能容易混淆。在一个双键鼠标上,第二个按键就是指右键,而第三个键就是指左右键同时按下。在一个三键鼠标上,第二:个键就是指中键,而第三个按键就是指最右边的按键。这三个按键可用来访问xterm的菜单。)
    一个xterm窗口有四个莱单:
    主菜单、虚拟终端选项菜单、虚拟终端字体菜单和TektroniX Window选项菜单。
    要弹出主菜单,按住Ctri键并单击鼠标左键。要弹出虚拟终端选项菜单,按住Ctrl键并单击鼠标的第二个(右边或者中间)按键。要弹出字体菜单,用Ctrl键和鼠标的第三个按键,从中可以设置字体和字符显示的大小。
     xterm窗口可以模拟DEC VT 102终端和Tektronix  4014终端。要显示TektroniX Window,可以在虚拟终端选项菜单中(Ctrl键和第二个按键)选择这个选项,会弹出一个可以显示图形的TektroniX Window。
    在TektroniX Window中,按住Ctrl键并单击鼠标的第二个按键,可以打开一个TektroniX选项菜单。
    终端窗口有一个特别之处,即可以在它的命令行里运行任何X Window程序。这个终端窗口在X Window环境中运行。要运行X Window程序,只需打开一个xterm窗口,输入命令,再按一下回车键即可。
    例如,要运行一个Netscape,可以打开一个终端窗口,然后输入命令“netscape”。一个新的窗口就会打开并运行Netscape。可以打开任意多个终端窗口,可以在它们中的任何一个中启动另一个X Window程序。要注意关闭一个终端窗口同时也会关闭从这个终端窗口中启动的程序。
    用户会注意到输入X Window命令的终端窗口会把自己挂起。当按回车键运行程序以后它并没有立即显示命令提示符,那是因为终端窗口正忙于运行刚刚执行的X Window程序。可以通过带有一个“和”符号(&)的命令来激活该程序使终端窗口释放自己,在那个程序运行的同时执行其他的命令,从技术上来说,这是把该程序放在该终端窗口的后台运行。下例将运行Netscape,并释放终端窗口来执行其他的命令。注意,在输入“netscape &”后,提示符立即出现,而不是处于挂起的状态。
      $ netscape &
      $
    当使用完终端窗口时,在命令行输入一个exit命令来结束它。每个终端窗口都是它自己的Shell,Exit就是结束这个Shell的命令。
4.1.6 X Window多任务
     Linux的X Window界面最有用的特性之一就是它可以同时打开几个任务,每一个任务都有自己的窗口。发布一个命令,执行完该命令后,还可以执行另一个。在X Window中,用户可以同时运行几个不同的应用。把鼠标指针从一个窗口,移动到另一个窗口,会有效地使用户从一个应用切换到另一个应用。X Window的这个特性表明了Linux最有用的特性之一--并发性,即可以同时运行多个进程的能力。
    在X Window界面中,可以同时运行多个应用,每个应用都有自己的窗口。可以很容易地用终端窗口来演示这个特性。在同一时刻可以有多个终端窗口,每个窗口都有自己的命令行。要从Caldera桌面上打开一个终端窗口,双击图标栏的终端图标;在fvwm中,使用工作区菜单或fvwm图标栏上的xterm按钮。要打开第二个终端窗口,再次双击该图标即可。还要再打开一个终端窗口,只要再次双击这个图标,依此类推。每个终端窗口都有自己的命令行,把鼠标指针从一个窗口移动到另一个窗口可以从一个命令行切换到另一个命令行。
    用户可以在一个活动窗口中输入命令并执行它,然后切换到另一个终端窗口再输入另一个命令。每个终端窗口都相互独立地运行。如果发布的一个命令需要一段时间来运行,当用户移动到另一个窗口时,可以看到刚刚离开的那个窗口中的命令仍然在继续执行。
4.1.7 fvwm窗口管理器和桌面
     frwm窗口管理器不仅提供了基本的窗口。任务栏和菜单工具,而且还支持虚拟桌面等高级功能。用fvwm窗口管理器,用户可以有多个桌面,每个桌面都有不同的窗口和程序。
      4.1.7.1  fvwm工作区菜单
    用鼠标单击工作区然后稍微向下拖动,就会弹出工作区菜单。这个主菜单包含子菜单,其中一些子菜单本身也包含子菜单。例如,选择应用选项,将弹出其于菜单,其中列出当前所有的X Window程序类别。如果用户选择xpaint,xpaint程序将会开始运行。
    当安装或者删除一个X Window程序的时候,fvwm将会自动更新工作区菜单。经常使用的X Window程序项目己经被设置。如果把frwm设置成检查在/usr/Xllr6/bin和 /usr/openwin/bin目录下的任何新程序,这些程序将被加到工作区菜单中。
    要退出fvwm,从工作区菜单中选择退出桌面选项,接着将弹出一个包括停止桌面选项的子菜单。当选择这个选项,frwm将会与X Window一同退出。
      4.1.7. 2  GoodStuff任务栏
     fowm的最新版本包括GoodStuff任务栏,任务栏上的按钮用来显示经常使用的X Window命令。GoodStuff任务栏将在启动fvwm窗口管理器的时候被显示:如果没有显示任务栏,可以通过在工作区菜单的桌面菜单中选择启动GoodStuff选项启动它。每个按钮都将显示程序的名字。只要单击按钮就可以后动相应程序,例如,要打开一个xterm窗口,只需要单击xterm按钮。
    使用WWW按钮将启动因特网浏览器。使用xfm按钮启动xfm文件管理器,通过菜单和图标可以访问系统上的目录和文件。如果用户选择标准安装方式,那么可能没有安装所有程序。如果没有,用户将被问到是否愿意安装它们。
    要使GoodStuff任务栏永久地显示在fwm桌面上,在vwm工作区菜单所在的桌面上的设置菜单的GoodStuff子菜单中选择位置选项。用户可以选择把它放在屏幕的顶部、中间、左边或者右边。用户可以随意地移动或者重置任务栏的大小。要移动任务栏,用鼠标右边的按钮单击它的边缘,然后拖动到想移动到的地方。要重置大小,用鼠标左键单击它的边缘或者一角并拖动。
    如果不想再显示任务栏,在fvm作区菜单所在的桌面上的设置菜单中的Goodstuff于菜单中选择无效选项。
    任务栏的配置文件为system.frwnirc.goodstuff,它位于/usr/lib/Xll/fvwm目录下。文件中含有任务栏的按钮的记录。用户可以通过在一行的前面加上一个“#’来删除一个按钮。还可以给新按钮添加其他行。一个按钮记录用关键字*GoodStuff开始,其后是用户想显示的按钮和想在按钮上显示的图片。行末是要运行的命令,通常用Exec命令开始,接着是一个空字符串和xlaunch命令然后是程序名。下例给Crispliie编辑器添加一个按钮。激活Crisplite编辑器的命令是mcr。
    *Goodstuff  Crisplite dtp.xpm Exec " "  xlaunch  mcr
    .xpm文件就是用来显示的图片文件。用户可以在/usr/share/data/pixmaps和
/usr/openwin/lib/pixmaps目录下找到很多这样的文件。
     4.1.7.3 虚拟桌面
    开始用户可能会为虚拟桌面而不安,因为虚拟桌面它含有一种内置的放大特性。用户将发现在屏幕上显示的区域可能只是桌面的一部分。移动鼠标指针到屏幕边缘将移动到桌面的被隐藏的部分。用户还会注意到在桌面的右上角有一个小方块。这叫做pager,用它可以查看虚拟桌面的不同区域。这个pager被分成四个小正方形。用户可以把每个正方形想象成一个独立的桌面的扩充。虚拟桌面就像用户有一个很大的桌子,只有部分被显示在屏幕上。这个桌子活动的部分就是加亮的正方形,通常是白色的,这个正方形就是显示在屏幕上的那部分桌面。
    通过移动这个加亮的正方形,可以移动到桌面的不同地方。记住用鼠标的右键来单击和拖动这个加亮的正方形。也可以单击pager四个部分中的一个来移动到桌面的对应部分。可以把不同的窗口放在桌面的不同部分,然后需要的时候再移动到那个部分中。用这种办法,用户放在桌面的所有内容就不一定要一起显示在屏幕上而使屏幕显得凌乱不堪。
    如果在桌面上工作,突然所有的内容都不见了,这可能是因为碰巧单击了其中的一个正方形。只要再次单击右上方的正方形就会回到原来的状态。
    不论虚拟桌面显示在哪个部分,某些项目始终显示在屏幕上。这些项目被称为“粘性(siicky)”项目。fvwm  pager与fvwm任务栏一样都是这种项目,例如,fvwm  pager总是显示在屏幕的右上角上,而不管用户在查看虚拟桌面的哪一部分。而窗口不是粘性的。
    Caldera桌面既可以是粘性地停留在屏幕上,也可以是作为一个窗口,保留在虚拟桌面上。
    Caldera任务栏最左边的图标用于在粘性图像和窗口之间切换。如果它是一个窗口,用户将看到桌面有一个标准的fvwm窗口边界,可以随意移动或者重置大小。作为一个粘性图像,则桌面没有边界。不论屏幕移动到虚拟桌面的哪一部分,  Caldera桌面都在屏幕上显示任务栏。菜单和图标。
    开始虚拟桌面的屏幕区域可能不到pager的一个部分。可以在/etc/XF86Config文件中把虚拟选项设置成显示器的分辨率。在大多数15英寸的显示器中,分辨率是800*600。
    大多数窗口管理器,包括fvwm,也支持多种桌面。在这个意义上,桌面是一个包含了图标、菜单和窗口的屏幕:使用像fvwm这样的窗口管理器,用户可以使用多种不同的桌面。fvwm可以支持40亿种桌面。
4.1.8 配置X Window系统
    X Window 设计得十分灵活,用户可以通过各种方式配置它。X Window可以在目前的大多数显示卡上运行,甚至也可以在图形加速卡上运行。
    X Window不拘泥于任何特定的桌面界面,X Window提供一套底层的图形操作函数集,供用户界面应用程序(如窗口管理器和文件管理器)使用。窗口管理器利用这些操作函数来构建控制窗口的软件包,如滚动条、尺寸调整按钮以及关闭按钮。不同的窗口管理器能够构建出不同的软件包,从而提供不同的界面。所有的这些窗口管理器都能在 X Window上运行,存在多种的窗口管理器供用户选择。
    在系统中,各用户可以运行不同的窗口管理器,但各用户使用同一个X Window底层图形操作函数集。用户甚至能在没有任何窗口管理器和文件管理器的情况下运行X Window程序。
    为了运行X Window,必须安装与系统显示卡匹配的X Free86服务器软件包,并提供有关当前系统的显示器、鼠标以及键盘的配置信息。这些信息存放于/eic/XF86COnfig 配置文件中。这个文件使用的配置信息最好由X Window配置程序生成,如 XF86Setup。在用户安装系统的过程中进行X Window配置时,会自动生成/eic/XF86Config文件。
    用户可以通过Xinitrc和/usr/xllR6/lib/xll/xinii/xinitrc这两个配置文件来配置自己的X Window界面,通过这两个文件用户可以选择并且启动窗口管理器、文件管理器以及初始X Window应用程序(在Linux系统里,目录usr/XllR6/lib/Xll/xinit/是目录/etc/X11/xnit/的一个链接,文件实际存放在目录/etc/Xll/xinit/中)。
    还有一组特殊的X Window命令,用户可以用它们来配置根窗口、装入字体或者配置X Window资源,例如设定窗口边界颜色,用户还可以从联机资源下载X Window实用程序,那些作为LinuX 镜像站点的联机资源通常存放在/pub/tinux/xll目录下。如果不得不编译一个X Window应用程序,用户可能必须采取特殊的步骤来安装,有关这部分信息将在3.6.14节中介绍。
    除了可以配置X Window之外,用户还可以配置窗口管理器。窗口管理器fvwm有它自己的一套配置文件,通过它们可以增加任务栏按钮或增加菜单项,甚至建立键盘映射。
      4.1.8.1  XFree86服务器
    xFree86服务器支持的显示卡和显示器范围很广,有支持单色、VGA和SVGA的服务器,有为图形加速卡设计的一系列服务器,每种芯片组对应一种服务器。如需要更详细的信息,可查看位于目录/usr/xllR6/lib/Xll/doc中的xFree86文件。在该文件中能找到对应于各种服务器的文件以及各服务器所支持的显示卡类型的信息。文件AccelCards列出了目前被支持的所有硬件,包括芯片组,文件Monitors列出了显示器配置信息。也可以查看不同驱动程序的man帮助页。各驱动程序及相应的man帮助页如下所示:
    显示卡   man帮助页
    加速卡   XF86_Accel
    单色显示卡  XF86_Mono
      VCA显示卡    调F86_VGA16
      *V6A显示卡   调F86_SVCA
     安装系统时所指定的XFree86服务器会自动安装,用户将不得不使用lisa、glint或者rpm来安装其他服务器,它们存放在CDROM的目录Linux/install/xbasisl下。每个包含XFree服务器的软件包以“XFree86”开头。用户必须安装与当前的显示卡匹配的软件包。大多数标准显示卡能在SVGA服务器上工作。如果用户正在使用简单的单色或VGA显示卡,只要安装一般的XF86_Mono或XF86_VGA服务器。但是,如果装有图形加速卡,必须首先确定它使用的是什么芯片组。查看随卡买回来的手册或文档。如果不能确定芯片的类型,可以使用Superprobe实用程序,它会分析当前的加速卡,确定所需信息。
    首先,看一下Superprobe的man帮助页以便在启动它之前确定要使用的参数。一个特定服务器的名字中通常包含它所支持的芯片组的名字。例如,如果正在使用的显示卡上有S3芯片组,将使用XFree86_S3软件包。如果使用ViRGE芯片(Diamond Stealth 3D 2000),将使用S3V服务器。在某些情况下,不同品牌的显示卡使用同一种芯片。如果用户在CDROM中没有找到所需的服务器软件包,可以查看任-Linux镜像站点寻找更新的版本(通常在目录/pub/Linux/xll/Servers下)。
    通过PRM可以安装相应的X Window服务器,下面是安装S3芯片组显示卡的例子:
     rpm -i XFree86_S3-3.2-I.i386.rpm
     4.1.8.2  /etc/XF86Config 文件
    安装了XFree86 服务器后,就该配置X Window界面了。
    这会涉及到配置文件XF86Config的生成,它位于/etc目录下,包含了有关当前图形卡、显示器、键盘以及鼠标的所有详细说明。用户可以直接创建这个文件,但最好使用诸如XF86Setup或XF86Config之类的实用配置程序。用这些实用程序配置时,只需回答有关硬件的一些问题,然后程序会自动生成相应的XF86Config文件。
    用户应该了解关于当前系统硬件的详细信息。
    对于显示器,用户必须知道它的水平和垂直同步扫描频率范围以及带宽。对于图形卡,应该知道它的芯片型号,有时甚至还应知道时钟频率。
    对于鼠标,应该知道它是Microsoft兼容系列还是其他品牌,诸如Logitech,同时还应知道鼠标所连接的端口号。
    XF86ConfiR命令提供给用户一个全屏幕界面,用户可以非常轻松地为鼠标、键盘、图形卡和显示器选择各项特性。如果在用XF86Setup进行配置时碰到问题,用户可以使用XF86Config命令。它的界面是命令行提示符形式,可以敲入字符作为响应,每一步都有提示,使用户方便地完成X Window的配置。
    文件/etc/XF86Config分为如下文所示的几个节。用户可以在XF86Config的man帮助页中找到关于所有这些节和对它们各项的详细信息。所有这些记录项都是XF86Setup程序建立的。例如,显示器配置屏生成/etc/XF86Config文件中的显示器节、鼠标配置屏生成鼠标节等。文件里每一个节以关键词Section开头,紧接着是用引号括起来的节的名字。每一个节以Endsection结束。注释行都以“#”开头。每一个节的各项都以数据说明开头,然后是一系列取值。例如,列出rgb色彩数据的Files节,以数据说明RgbPaih开头,然后是rgb颜色数据文件的路径名。
    下面列出了/etc/xf86Config文件中的各节及其说明:
    Fi1es,       字体和颜色文件目录
    Module        动态装载模块
    serverFlags   选项
    keyboard      键盘规格
    Pointer       鼠标配置信息
    Monitor       显示器配置信息
    Device        显示卡配置信息
    Screen        屏幕配置信息
    尽管用户可以用标准的文本编辑器直接编辑文件/etc/XF86Config,但最好是使用诸如XF86Stetup之类的配置程序进行修改。用户可能从来不会去修改文件中的大多数节,但是用户可能不得不对Screen节进行修改。为了这样做,可以编辑文件并增加或修改Screen节的各项。由于Screen节是用户最有可能修改的节,所以尽管它出现在文件最后,还是最先讨论它。
      1. Screen节
    Screen节首先是Driver项,它指定了驱动程序的名字。
    有5种驱动程序,每一种对应于一种XFree86服务器:Accel、Mono、SVGA、VGA2和VCA16。
    驱动程序Accel用于诸如S3_XFree86之类的所有加速型X Window服务器。
    Mono用于xF86_Mono服务器支持的非vGA单色驱动器。
    VGA2和VGA16用于VGA服务器,SVGA用于XF86_SVGA服务器。
    如果使用XFree86_SGA服务器,Drier项将是“svga”。如果使用任意一种加速型服务器,这一项将是“Accel”。诸如XF86Setup 之类的配置程序将为以上这些显示方式生成Screen节。如果有一块加速卡并且能为它安装服务器,那么XWindow 将使用Accel Sereen节。如果正在使用SVGA Screen服务器,将使用SVGA Screen节。
    在Driver项之后是Device和Monitor项,它们分别指定用户正在使用的显示器和显示卡。
    下面是/e=c/XF86Config文件中的一部分:
              Section  “Scree”
              Driver   “AcCel”
              Dev1ce   “prlmary  card”
            Monitor       “primary  Monitor”
            DefaultcolorDepth       l6
            subsection        “Display”
            Depth           8
            Modes “1152X864”“1024x768”“800x600”“640x480”
            “640X400”“480x300”“400X300”“320x240”“320x200”
             Virtual  800        600
          EndSubSecti0n
                  Subsection“Display”
     Screen节下有Display子节,指定所支持的颜色深度。前面各部分是配置硬件的,而Display子节则配置一些显示特征,例如显示颜色数和虚拟屏幕尺寸等。子节中主要有三项:Depth、Modes和Virtua1。
    Depth项指明屏幕分辨率:8、16或24。不论当前的X Window服务器支持什么显示卡,用户都可以加入DefaultColorDepth项为服务器设定默认颜色深度:8表示256色、16表示32K色、24表示16M色。
    Modes项指定在所给分辨率下允许的显示模式。Virttual项指定虚拟屏幕的尺寸。用户能够拥有一个比正常显示面积大的虚拟屏幕。当移动鼠标至显示屏幕边缘时,它将向隐藏的那部分屏幕移动,通常将虚拟屏幕设定为1024×768,相当于17英寸显示器的尺寸。也可以设为1152×864,相当于21英寸显示器的尺寸。如果想取消虚拟屏幕,可以把Virtual项设为800×600,使虚拟显示尺寸和屏幕物理尺寸大小相等。
    下面是几种常见虚拟屏幕对应的空间大小:
        Virtual  l024  768           17 英寸虚拟屏幕
        Vimial   ll52  864           21英寸虚拟屏幕
        Virtual  800  600            15英寸屏幕(取消虚拟屏幕)
    可以改变这一节中的任何特性。为了改变虚拟屏幕尺寸,必须修改这一节。但是,不要轻易修改XF86Config文件中的其他节,除非用户胸有成竹。
      2. Fi1es、Modules,ServerFlags和Keyboard节
     Fi1es节列出了XFree86所需资源所在的目录。一个字体项以数据说明FontPath开头,然后是那种字体的字体文件所在的路径名。下面是这些项的一部分:
                RgbPath                    “/usr/XllR6/lib/xll/rgb”’
              FontPath                     “/usl/XllR6/lib/xll/fonts/misc:unscaled”
    Module节指定了一些动态加载的模块。  Linux的ELF系统支持动态模块。Load项将加载一个模块。详细情况请查看XF86Config的man帮助页。
    可以为XFree86服务器设置一些标志。用户可以在XF86Config的man帮助页中找到所有标志。例如,标志NoTrapSignals允许清除内核,以便调试程序。标志DontZap禁止用Ctrl+Alt+Backspace组合键关闭服务器。DontZoom标志禁止图形模式之间的切换。
    Keyboard节决定键盘类型并且设定布局、模型和所用协议。例如,下面这一项就设置了布局。这一节有很多选项。如想得到全部列表,可参考XF86Config的man帮助页。
                xkbLayout                     “uS”
      3.Pointer节
    Pointer节配置鼠标和其他所有定位设备。这一节只有几个项,其中一些用于定制某些特定类型的鼠标。Protocol项指定鼠标所使用的协议,如Microsoft或Logitech。Device项指定了鼠标设备文件的路径名。
    下面的例子显示了一个标准的Pointer节,它配置的是一个波特率为l200的Microsoft鼠标。设备文件为/dev/mouse。
                secton      “pointer”
                protocol              “Microsoft”
                Device              “/dev/mouse”
              BaudRate                      l200
          Endsection
    以下列出了pointer节各项:
      Protocol     鼠标协议(运行man XF86config命令可得到完整的表)
      Device      设备文件路径,如/dev/mouse或/dev/cua0
      BaudRatc           串行鼠标的波特率
      Emulate3Buttons    允许二键鼠标通过同时按左右键来模拟三键鼠标
      chordMiddle     配置某些Logitech三键鼠标
      CleatDTR和ClearRTS清除DTR和RTS,只对Mouse Systems鼠标有效
      sampleRate      设置抽样率(Logitech)
    4.Monitor节
    在用户的系统上使用的每一台显示器都应该有一个Monitor节。正如前面所指出的,垂直和水平扫描频率必须精确,否则可能会损坏显示器。
    Monitor节开始的几项用来标识显示器,如销售商和型号。HorizSync和VerRefresh项指定了垂直和水平扫描频率。大多数显示器支持多种分辨率。Monitor节中的各MOdeLine项指定了分辨率。每一项ModeLine对应一种分辨率。每项有5个值:
    分辨率名称、时钟频率,然后是两组值(每组4个值),一组是水平定时参数,一组是垂直定时参数,以标志位结束。
    标志位指定显示模式的各种特征,比如Interlace表明显示模式是隔行扫描的,而+hsync和+vsync则是用来选择信号的极性。
    Mode1ine “name” dotclock horizontal-frep vertical-frep flags
    如下是ModeLine的一部分。最好不要改动Monitor节,而完全由 XF86Setup配置程序生成各项。
        Mode1ine “800 x 600"  50.0 800 856 976 1040 600 637 643 666 +hSync +Vsync
    下面列出Monitor节中通常使用的一些项:
        Identifier 显示器标识名
        vendorName 生产厂家
        ModelName  样式和型号
        Horizync   水平扫描频率,一个范围或一系列值
        verRefresh 垂直刷新频率,一个范围或一系列值
        Gamma       Gamma校正
        ModeLine  通过指定时钟频率、水平定时参数和垂直定时参数来确定相应的分辨率
      5.Device节
    Device节指定了系统显示卡。Device节的开头几项用来标识显示卡,比如VendorName(销售商)、BoardName(显示卡名称)和Chipsei(芯片组)。
      videoRam项指明了显存大小。Clocks项列出了一组系统的时钟值。这一节中可以设定很多不同的项,比如,如果显示卡上有Ramdac芯片,可以用Ramdac项指定Ramdac芯片的类型,如果允许访问主缓冲区,MemBase项指出了主缓冲区的基地址。详细列表和描述可参考XF86Config的man帮助页。
    用户可以修改VideoRam项。例如,增加显示卡的内存,但最好别修改Clocks项。如果设错了时钟值,很容易损坏显示器,所以最好由XF86Setup或其他XFree86配置程序来生成时钟值。如果没有时钟值,服务器会自动确定。
4.1.9 X Window和窗口管理器
    用户可以放弃命令行界面而使用X Window窗口管理器和文件管理器,这样通过使用窗口、按钮和菜单,用户就能够与Linux系统进行交互。
    窗口管理器提供了基本的窗口管理操作,例如打开、关闭窗口或改变窗口尺寸。文件管理器则允许用户使用图标和菜单来管理和运行程序。此外,使用文件管理器还能够拷贝、移动或删除文件,也能够分别为不同的目录打开不同的窗口。
    为Linux设计的窗口管理器有多种。其中较为流行的Linux管理器有:Free Virtual Window Manager(fvwm)、 Xview(olwm)、twm、frwm95(fywm95)、LessTif(mwm)、
AfterStep(afterstep)以及Motif(mwm)。
    除了Motif之外,其他几种都是免费的。
    xview是Sun公司的OpenLook界面的Linux版本。fvwm95是fvwm的一个扩展,它提供包含任务栏的Windows 95界面。  LessTif是一个免费的Motif姊妹程序,它能够提供Motif界面,并能运行Moiif应用程序。twm是一个稍微旧一点的窗口管理器,它提供基本的打开窗口功能。在Linux上已经安装了fvwm、twm和Xview。其他的窗口管理器可以从相应的因特网站点或Redhat contrib目录下载。只要在相应的网址上有较新版本的窗口管理器,用户就可以下载并安装。
    窗口管理器对底层的X Window系统进行操作,后者实际上提供各项基本的窗口操作,允许用户打开、移动和关闭窗口,以及显示莱单和选择图标,fvwm和Xview分别以自己的方式管理这些操作,并分别具有不同风格的界面。这样设计的好处是用户可以用不同的窗口管理器操作同一个Linux系统。
    这层意义上来说,  Linux并不局限于一种图形用户界面(GUI)。在同一个Linux系统上,一个用户可能正在使用fvwm窗口管理器,另一个用户可能正在使用Xview窗口管理器,而第三个用户则在使用fvwm95,所有用户都在同时使用系统。
     fvwm是GNU软件,用户免费拥有它。如果只使用fvwm,用户仍然能够运行任何X Window程序。fvwm有它自己的菜单和任务栏,用户也可以从xterm终端窗口运行任何X Window程序。从fvwm启动一个xterm窗口,输入X Window应用程序的名字,然后按回车键,X Window应用程序将启动自己的窗口。最好通过在命令后面加符号“&”的方法以后台进程方式启动X Window应用程序。系统将为用户使用的X Window应用程序打开一个窗口。用户可以以后台方式运行Caldera CDROM上的任何X Window软件。X Window应用程序的名字经常是以字母X开头的,但是也有例外,比如Netscape和Mosaic。用户可以从Linux的FTP站点下载各种各样的X Window软件。它们通常在目录Xll下,比如/pub/Linux/Xll。
    只能在特定的窗口管理器下运行X Window应用程序的情况是很少见的,用户可以在fvwm、Xview、fvwm95或其他任何窗口管理器下运行同一个X Window应用程序,例如Netscape。甚至在没有任何窗口管理器的情况下,也可以运行X Window应用程序。用户也可以打开一个非常简单的xterm窗口,然后从xterm窗口启动X Window应用程序。X window应用程序运行所需要的只是X Window,而不是窗口管理器。
4.1.10  fvwm配置文件
    fvwm窗口管理器启动时将执行自己的配置文件。这些文件将完成一些任务,诸如在fvwm任务栏上显示按钮,在工作区菜单里建立菜单项,决定启动什么初始化程序(如果有)。这些配置文件在目录/usr/xllR6/lib/Xll/fvwm下。每个文件的名字以单词system开头。
    基本配置文件是system.fvwmrc。这个文件是其他文件的开头,如system.fuwmrc.desk和system.fvwmrc.goodstuff等。
    用户可以修改这些配置文件,按照自己的喜好配置fvwm窗口管理器。例如,如果想往任务栏添加按钮,可以往文件system.fvwmrc.goodstuff里添加记录。
    对文件system.frwmrc的修改将改变系统上的所有用户的配置。当然,每个用户可以在自己的主目录下建立个人的配置文件fvwmrc,它只对创建它的个人用户起作用。每次用户执行startx命令时,这个文件就被执行,并被用来配置fvwm。
    4.1.10.1 任务栏:system.fvwmrc.goodstuff
    要往任务栏添加按钮,可以在文件system.fvwmrc.goodstuff中建立新的记录。记录以关键词*Goodstuff开头,接着是用户想在按钮的图像下显示的文本,然后是用户想显示的图像文件名。图像是pixmap型,文件扩展名是.xpm。用户能够在目录/usr/openwin/lib/pixmaps和usr/share/data/pixmaps下找到图像文件。图像文件名后面是一个fvwm操作。尽管这个操作通常是Exec命令,但它实际上可以是任何fvwm命令。Exec将执行一个Linux命令或程序,Exec命令后面是一个可以作为菜单项的名字的字符串。对按钮条来说,它只是一个空串“”。字符串后面是Xlaunch命令和程序名字。下例往Crisplite编辑器中添加一个按钮。启动Crisplite编辑器的命令是mcr。
          *Goodstuff       Crisplite   dtp.xpm  Exec ""  xlauch    mcr
    如果想从任务栏移去一个记录,可以删除文件中对应于此记录的那一行,也可以在那一行开头插入“#”并符号作为注释。支持任务栏的其他窗口管理器也有类似的配置文件。
      4.1.10.2工作区菜单:system.fvwmrc.menu
    文件system.fwmrc.menu保存着工作区菜单的配置信息。工作区主菜单在该文件末尾定义,子菜单则在主菜单前定义。工作区菜单和其他主要子菜单都用命令PopupSMenu定义。每一项占一行,每一项通常对应一个菜单定义,Popup项指定了这种定义。Popup项后面是将显示在菜单上的记录名称,然后是相关菜单的名字。菜单名称中前面有“&”的字母在菜单显示时带有下划线,并作为快捷键的关键字母。按下那个字母将选择该字母对应的菜单项。部分菜单定义如下所示:
            PopSMennu  ('Workplace','
                  Title       “Workplace”
                  Nop          “”
                  Popup         “&He1p on Linux”  Help
                  NOp           “”
                  Popup         “&Shells”            Shells
    很多子菜单用PopupMenu命令定义。紧跟着popupMenu的是一串记录名称和命令,它们之间以逗号隔开,所有这些字符串被一对括号括起来。第一项通常是子菜单名称;然后是子菜单名称,它后面是该子菜单执行的命令:紧接着又是一对子菜单名称和命令。可以用符号“&”来指定快捷键关键字母。子菜单Text and Publishing就是这样的弹出式(popup)菜单,如下是部分菜单定义:
              PopupMenu  ('Text and Publishinq’,'Menultem’,
              ‘L&yX (WYSIWlN TeX)’,'lyx’,
               ‘ X&wpick(Screen shot)’,'xwpick HOME/xwpick.gif',
                 'X&fig(Vector graphic)’, 'xfxfig’
     如要往菜单里添加一个菜单项,可以先找到该菜单的定义部分,然后插入一空行,输入想添加的菜单名称和命令。例如,要在文本和菜单中插入对应于Crisplite编辑器的菜单项,用户将插入以下这行。字母C前面的符号“&”表示建立了关键字母为c的快捷键,别忘了加上逗号。
              “Crisplite”,         m&Cr,
    千万不要修改文件system.fvwmrc.menu.prep。这个文件是由fvwm生成的,它实际上创建了工作区菜单。这个文件是由文件menu提供的信息自动生成的。
    安装在目录/usr/xIIR6/bin下的X Window程序会自动加载到Application菜单下的Other Applications子菜单上。因此,用户能够通过工作区菜单执行任何X Window程序。往菜单文件中添加一条记录将把该记录对应的菜单项放在一个特定子菜单中,而不是放在Other Applications菜单中。
    4.1.10.3 图标风格与设备映射:.styles和.bindings
    文件system.fvwmrc.styles存放着用于指定特定程序的窗口风格的记录。例如,下面显示的指定页面调度程序风格的StaysQnTop使页面调度程序始终位于所有窗口前面,Style项也被用来指定程序窗口图标化时所使用的图像文件。用户能够改变这些项目,以便显示不同的pixmap图像,或者为新的程序添加新记录。
              Style    “fvwmPager"         StaysonToP
              style    “xqraph”                   Icon  qraphs?xpm
    文件system.fvwnirc.bindings 存放着所有鼠标按键和键盘的映射。鼠标按键和键盘对工作区菜单的操作都在这儿定义。按下组合键A1t+Fl将显示工作区菜单,单击鼠标左键(键1)可以得到相同的结果。下面这一项就是定义了组合键Alt+Fl与工作区菜单之间的映射。Context域是指组合键的适用窗口,字母A代表任何窗口;字母R代表根窗口,Modifi域指任何需要同时按下的控制键。字母M代表元键(Alt键);字母S代表shift键。
            #key     Context        Modifi        Function
            key F1      A  M           Popup  “Workplace”
    4.1.10.4 初始启动应用程序:system.fvwm.desk
    在Linux系统里命令startx首先启动X Window,然后是fvwm窗口管理器,接着是caldera Desktop Looking Glass。 caldera oesktop的自动启动是由fvwm的配置脚本文件完成的。这些配置文件可以用来指定在fvwm启动时被自动启动的程序。
    通常,startx命令通过配置文件/eic/Xll/init/xinitrc调用xinit命令。这个xinitrc文件执行基本的X window配置操作,最后启动fvwm窗口管理器。fvwm窗口管理器有它自己的启动文件,该文件位于目录/usr/XIIR6/lib/Xll/fvwm下。system.wmrc文件是基本配置文件,它执行startupFunction命令,文件system.fvwmdesk定义了这个命令。在这个文件中,StartupFunction被定义为执行命令lg,该命令启动Caldera Desktop(lg代表CalderaDesktop的真正名字-Looking Glass)。如果用户不想让Caldera Deskiop随着siartx命令自动启动,只需在有lg命令的那一行开头插入符号“#”,使这一行成为注释行。如果用户想让fwvm自动启动其他的文件管理器或者桌面,可以把命令插入到文件system.fvwmdcsk中。用户能够很轻松地把文件system.fvwmrc里的整个StartupFunciion 注释掉,如下所示:
              ?#   Function          “I”     StartupFunction
    如果从fvwm取消Caldera Desktop的自动启动功能,用户可以使用工作区菜单来启动Caldera Desktop。在Desktop子菜单中,用户将能找到对应于Looking  Glass(Caldera Desktop)的菜单项。选择这一菜单项将启动Caldera Desktop。用户当然也可以用这种方法启动别的文件管理器或桌面。
4.1.11  X  Window命令行参数
    用户能够以.xinitrc脚本文件的方式,或者以xterm窗口里的命令行方式启动任何 X window应用程序。大多数X window应用程序支持一组标准的X Window参数,这些参数用来配置应用程序所使用的窗口和显示。用户可以设定标题栏的颜色、确定窗口的标题、指定文本颜色和字体,也可以把窗口定位于屏幕的特定位置。它们在X的man帮助页中有详细说明(运行 man X)。下面就介绍X windows命令常用的参数:
      -geometry是一个经常使用的参数。它还需要另外的参数,通过它用户能够指定应用程序的窗口在屏幕上显示的位置。在下面的例子里,X Window应用程序xclock在带有geometry参数的情况下被启动,那些数字(最多可以有4个)用来确定窗口位置。+0+0表示左上角;-0-0表示右上角。用户启动X Window窗口时,将能看到显示的时钟。
                &  Xclock       -geometty          +0+0      &
    用户可以通过-title参数设定应用程序窗口的标题。注意当标题不只一个单词时,要用引号把它们括起来。-fn参数用来设定字体;-fg设定文本和图表颜色;-bg设定背景颜色。下例打开了一个标题为“My New Window”的窗口。它的文本和图表颜色是绿色,背景颜色是灰色,字体是Helvetica。
      $ xterm -title“My New Window”  -fg  green   -bg   gray  fn
            /usr/fonts/helvetica     &
4.1.12 X Midow配置文件
    X Window使用配置文件和X Window命令来配置X Window系统。其中一些配置文件属于系统,不能修改。但是,每个用户可以有一组自己的配置文件,诸如.xinitrc和.Xresources等。
    使用这些文件可以建立个人风格的X Window界面。当用startx命令启动X window时,这些配置文件被自动读取并执行。在这些配置文件里,用户能够执行X window命令来配置系统。通过诸如xset和setroot之类的命令,用户能够增加字体或者控制根窗口的显示。
    用户可以通过使用xdypinfo命令得到当前使用的X Window系统配置的完整描述。man帮助页有关于X Window命令和配置文件的详细介绍。
                  $ man        X
     X Window是由命令xinit启动的。但是用户无需直接执行这个命令,可以通过经常用来启动X Window的startx命令来执行它。这两个命令部在目录/usr/xllR6/bin下,和许多基于X Window的其他程序存放在一起。
    startx命令是一个执行xinit命令的Shell脚本文件。xinit命令按顺序首先查找位于用户主目录的X Window初始化脚本文件.xnitrc。如果在主目录里没有脚本文件.xinitrc,xinit将把/usr/llR6/lib/Xll/xinit/xinitrc作为其初始化脚本文件。.xinitrc和/usr/XllR6/lib/Xll/xinit/xinitrc中都有配置X Window服务器的命令,它们执行诸如启动窗口管理器之类的X Window初始化命令。可以把/usr/XllR6/lib/Xll/xinit/xiniirc脚本文件看作默认脚本文件。在Linux系统里,/usr/XIIR6/lib/Xll/xinit目录实际上是目录etc/Xll/xinit的一个符号链接,默认初始化文件都存放在/etc/Xll/xinit目录中。
    Linux系统并不自动地在任何用户中目录下创建xnitrc脚本文件,需要.xinitrc脚本文件的用户将不得不亲自创建.xinitrc脚本文件,每一个用户(包括根用户)可以在自己的主目录下创建个人风格的.xinitrc脚本文件,以便按照自己的意愿来配置和启动X Window。在某个用户创建自己的.xnitrc脚本文件前,默认使用/usr/XIIR6/lib/Xll/xinit/xinitrc脚本文件。用户才可以通过查看这个脚本文件来了解X Wincdow是如何启动的。X Window的某些配置操作必须在文件.xinitrc中完成。对于想要创建自己的.xinitrc脚本文件的用户,最好首先把脚本文件/usr/xllR6/libxll/xinlt/xinitrc拷贝到自己的用户主目录下,命名为.Xinitrc。然后,用户才可以随心所欲地修改这个脚本文件(注意:系统的xinitrc脚本文件在名字前面不带“.”号,而用户自己建立的主目录下的?xinitrc文件名字前面带“/’号)。用户如需要更多的信息,可参考xinit和startx的man帮助页。
    除了xinit命令之外,其他命令,如xrdb和xmodmap等,也能够用来配置X Window的界面。在资源文件,xresources中列出了X Window的一些图形配置。每个用户可以在自己的用户主目录下拥有定制的.Xresources文件,用它来配置特定的X window。
    .Xresources文件包括一些配置特定程序的记录,比如某个工具箱的颜色。Xresources文件也有一个适用于整个系统的版本:/usr/xIIR6/lib/Xll/xinit/.Xresources(注意:与/usr/x11R6/lib/X11/xinit/xinitrc不同,在/usr/XIIR6/lib/xll/xinit/.xresources文件名中,Xreseources前面带有“.”号)。与文件.xresources一样,文件.Xdefaults也包括一些用来配置X Window资源的记录。
    Linux系统安装后只有一个系统.Xresources文件,但用户可以在自己的主目录下创建自己的.Xresources3文件,并且往此文件中添加一些资源记录。用户也可以拷贝文件/usr/x11R6/1ib/X11/xinit/.Xresources到自己的主目录下,然后编辑或添加自己的记录。配置操作是由命令Xrdb执行的,它会读取系统的.Xresources文件和用户主目录下的任何.Xresources文件和.Xdefaults文件。xrdb通常在脚本文件/usr/xllR6/lib/X11/xinit/xinitrc中被执行。如果用户在主目录下创建了自己的.xinitrc脚本文件,务必在文件最后运行xrdb命令,使它读取.Xresources文件或/usr/xIIR6/lib/Xll/xinit/xinitrc文件(最好两者都读)。要做到这一点,用户只需用系统的.xinitrc 脚本文件的一个拷贝作为自己的?xinit脚本文件,然后按照自己的喜好修改它。关于X Window 资源的细节,请看xrdb的man帮助页。当然也可以在X的man帮助页中找到关于.Xresource以及其他X Window配置文件的详细说明。
    .Xresources文件的每一条记录由一个分配给资源、类或一个应用程序资源的值组成。通常它们是工具箱的资源或一个应用程序中工具箱的类的资源。这些资源一般由三个元素的组合(元素之间用“。”号分隔)来指定:应用程序、对象和资源。
    例如,假设想在Oclock应用程序中把时针的颜色改为蓝色。应用程序是oclock,对象是c1ock,资源是hour:blue。这条记录如下所示:
              oclock.clock.hour:blue
    对象元素实际上是由一系列等级的对象组成,由此确定一个特定对象。在oclock这个例子中只有一个对象,但在很多应用程序中,对象分级是非常复杂的。用户将需要列出一串冗长的对象才能确定用户想指定的那个对象。为了避免这种复杂性,用户可以使用“*”号来直接引用想要指定的对象,具体做法是用“*”号来替代“。”号。下面的例子是把oclock的分针和时针设置为绿色。
              oclock*hour:green
              oclock*minute:green
    用户也可以使用“*”号把一个值赋于对象的所有的类,用户可以使用类的名字来引用这个类中的所有资源。类名以大写字母开头。例如,在xterm应用程序中,背景和鼠标指针颜色都是Background类的一部分。引用xterm*Background将改变xterm窗口中所有这些资源。
    用户也可以使用“*”号来改变所有应用程序的对象中的资源值。在这种情况下,可以在资源名前加一个“*”号。例如,要把每一个应用程序中的所有对象的前景颜色改为红色,可以输入:
                  *foreground:red
    如果只想改变所有应用程序中滚动条的前景颜色,可以输入:
              *scrollbar*foreground:blue
    命令showrgb将列出系统提供的各种颜色。用户可以改变某个对象中显示的字体,图形应用程序中的背景或边框图像。各个应用程序的资源各不相同。应用程序可能支持各种各样的对象和它们的资源。如果想了解一个应用程序所能支持的资源以及这些资源所能接受的值,可以查看此应用程序的帮助页和文档数据。某些资源的取值是逻辑量,用它们可以关闭或启动一些特性。其他一些资源则能够指定某些选项。
      文件/usr/XIIR6/Xll/xinit/.Xmodmap存放着诸如鼠标和键盘之类的系统输入设备的配置信息(例如,用户可以建立键的映射,如BACKSPACE也可以改变鼠标左右键的定义)。每一个用户可以在自己的主目录下创建自己的定制.Xmodmap文件,用它来配置系统的输入设备,如果用户是通过自己的终端和Linux系统相连接,这种定制的文件会对用户很有帮助。Xmodmap文件由xmodmap命令读取,通过它完成配置。xmodmap命令将首先在用户主目录下寻找Xmodmap文件,然后读这个文件。如果在主目录下没有Xmodmap文件,xmodmap命令将读文件/usr/XIIR6/lib/Xll/xinit/.Xmodmap。xmodmap命令通常在文件/usr/XIIR6/lib/Xll/xinit/xinitrc内被执行。详细情况请参考xmodmap的帮助页。
    通常,在.xinitrc脚本文件里有一些X Window命令,比如xset和xsetroot,用它们来配置X Window的各种不同特性。xset命令设置一些不同的选项,例如启动屏幕保护和设定铃与扬声器的音量等,也可以用xset来加载字体。详细情况请参考xset的帮助页。xset在选项b和参数on或off存在的情况下,将打开或关闭扬声器。下面的例子中,打开了扬声器:
          xset  b     on
    如果要设置屏幕保护,可以执行带选项-S的xset。用户可以通过参数on或off来启动或关闭屏幕保护。作为参数输入的两个数值指定长度和间隔(单位:秒)。长度表示屏幕保护程序在激活前等待的秒数。问隔是指屏幕保护程序在产生新的图案前等待的时间。
     xsetroot命令使用户能够设置根窗口的特性(设置颜色或显示位图图案,用户甚至能够自己设置光标)。要了解xsetroot命令的各选项和详细情况请参考xsetroot的帮助页。下面的xsetroot命令通过使用-solid选项把根窗口的背景设置为蓝色。
                xsetroot        -SOlid         blue
    文件/usr/xIIR6/lib/Xll/xinit/xinitrc中还包含一些命令和变量,它们用来配置Looking G1ass桌面、Xview窗口管理器和fvwm窗口管理器。
    在.xinitrc脚本文件里,窗口管理器的启动命令往往是这个脚本文件中的最后一条命令。无论.xinitrc脚本文件的最后一条命令是什么,在执行完这条命令后X Window将会退出。通过把启动窗口管理器的命令放在最后,在退出窗口管理器时将关闭X Window。用户想初始启动的其他任何程序都应放在窗口管理器命令前面。如果想在执行startx时都自动启动Neiscape或xfm文件管理器,用户必须把启动这些应用程序的命令放在窗口管理器命令前面。在应用程序后面应加一个“&”号,使它们能在后台运行。下例在fvwm启动时,自动启动xfm文件管理器和Netscape。
                  xfm    &
                  netscape        &
                  exec     fvwm
   下面是一个简单的。xinitrc文件的例子。它被设计成在启动fvwm窗口管理器的同时启动xfm文件管理器。变量OPENWINHOME和HELPPATH为需要Xview库的应用程序指出了这些库的存放目录。如果.xnitrc文件存放在用户主目录中它会指示xinit在启动fvwm的同时启动xfm(注意文件.xinitrc名字前的“.”)。当fvwm启动时,任务栏与页面调度程序将和xfm窗口一起显示。在屏幕的任何位置单击鼠标左键都会弹出工作区菜单。
                  .xinitrc
                  #!/bin/sh
            #$Xconsortium:xinitrc.cpp,v 1.4 91/08/22 11:41:34 rws Exp $
          userresources=$HOME/.Xresources
          use rmodmap=$HONE/.XmodmaP
          sysresources=/usr/XIIR6/xib/Xll/xinit/.Xresources
          sysmodmap=/usr/XIIR6/lib/Xll/xinit/.Xmodmap
          export  OPENWINHOME=/usf/openwin
          export  HELPPATH=$ OPENWINHOME/help
          #merge  in defaults and keymaps
          if [-f $sysresources];then
          xrdb -merge  $sysresources
                    fi
              if [-f $sysmodmap];then
              xmodmap  $sysmodmap
              fi
              if[-f $userresources];then
              xrdb -merge $userresources
                            fi
              if [-f $usermodmap];then
              xmodmap  $usermodmap
                                fi
              #start Some nice         programs
                        xfm 6
                      exec fvwm
    在目录/eic/Xll/xinit下有一个名为xinitfc.before.fvwm的仅有简单框架的.xinitrc文件样本。它没有对应于fvwm、Xview和Looking Glass(Caldera)桌面的配置命令。但是,这是一个仅包含运行X Window所必须的基本配置操作的好例子。该脚本文件将打开三个xterm窗口并且运行twm窗口管理器。如果需要,用户可以把这个脚本文件拷贝到自己的主目录下,作为自己的.xinitrc文件(如果用户现在有自己的.xinitrc文件,务必对它进行备份),然后就可以按照自己的意愿添加配置操作和命令。例如,可以去掉一些xterm命令,启动另一个不同的窗口管理器(添加需要的配置变量),或者启动一个应用程序,如Netscape。如果不想启动xclock,用户可以在它的命令前加一个“#”号,把这个命令注释掉。
4.1.13 字体
    X Window的字体文件存放在目录/usr/xIIR6/lib/Xll/fonts下。
    X Wind0w的字体文件由命令xfs程序来装载。xfS读取配置文件/eic/Xll/fS/config,然后根据这个文件的内容来处理字体文件。在xman帮助页里有关于字体的详细信息。为了安装字体集,把相应的字体文件放在一个用户能够把它的路径添加到catalogue项的目录下面,这样字体就可以自动安装。用户也可以用带+fp选项的xset命令单独地安装某种特定字体。用户系统里的字体由字体路径指定。字体路径是一些文件名,每一个文件存放一种字体。文件名包括它们的完整路径。下面是文件/etc/Xll/config中cata1ogue项的一个例子。这是一串以逗号隔开的目录列表。X Window首先在这些目录中寻找字体文件。
                Catalogue+
          /usr/X11R6/lib/X11/fonts/misc,/usr/XIIR6/lib/Xll/fonts/Speedo/,
          /usr/xllR6/lib/Xll/fonts/Typel/,/usr/XIIR6/lib/xll/fonts/75dpi/,
          /usr/XIIR6/lib/Xll/fonts/100dpi/
    在使用新安装的字体之前,用户必须首先使用mkfontdir命令建立字体索引。从包含新的字体的目录中,输入mkfontdir命令。用户也可以把目录路径作为mkfontdir命令的一个参数,在对字体索引完以后,用户可以使用带有选项fp rehash的xset命令装入这些字体。为了能够自动装载这些字体,把目录以完整路径名的形式添加到xfs配置文件的catalogue项中去。下面的例子显示了如何安装一种新的字体并加载它:
            $ cp    newfont.pcf           ~/myfonts
            $ mkfontdir            ~/myfonts
            $ xset          fp    rehash
    在一个字体目录下,有几个保存着关于字体的信息的文件。 fonts.dir文件列出了该目录下的所有字体。此外,用户叫以通过建立一个fonts.alias文件给一个字体文件取其他的名字。字体文件名一般很长、很复杂。详细情况请参考xfs和mkfontdir的帮助页。
    用带有十fp和-fp选项的 xset,用户能够分别地添加或者去掉特定的字体。带有参数rehash的fp选项将装载字体。如果使用命令“xset fp default”,将恢复默认字体集。+fp向字体路径添加一种字体。对于自己定义的字体,用户可以把它们放在任何目录下并且指定它们的名字(包括它们的完整路径名)。以下的例子把在目录/usr/1oca1/font5下的myfont字体添加到字体路径中。然后用带有参数rehash的中选项装入字体。
            xset             +fp      /usr/local/fonts/myfont
            xset              fp        rehash
   要去掉这种字体,需运行xset-fp /usr/home/myfont命令,然后运行命令xset fp rehash。如果想把系统恢复到默认字体集,输入如下命令:
              xset             fp         default
              xset             fp         rehash
    使用xlsfonts命令,可以列出目前安装在系统上的所有字体。如果想显示己安装的字体以查看它的外观,使用xselfonts命令。
4.1.14 编译 X Window应用程序
    为了编译X Window应用程序,用户必须确信安装了XFree86开发包和其他可能要用到的开发包。这些开发包包含了头文件和X Window程序使用的库。这类包的文件名一般含有devel,例如,XFree86-devel-3.1.2-2.i386.rpm。
    许多X Window应用程序可能需要特殊的共享库。例如,有些应用程序可能需要Xforms库或qt库。这些库中的某些部分可能不得不从联机站点得到,但大多数都可以从RPM形式的Redhat contrib目录得到。
    许多X Window应用程序需要生成一个为配置系统而创建的Makefile文件。如果有应用程序源代码,这个任务可以由Imakefile文件完成。Linux系统的有些发行版本含有xmkmf命令,这个命令能够根据Imakefile文件的内容自动生成相应的Makefile文件。
    有了Makefile文件后,就可以用make命令编译应用程序。xmkmf命令调用程序imake从Imakefile生成Makefile文件。但是用户不能直接使用imake。关于xmkmf和imaker的详细情况可查看相应的man帮助页。许多程序使用配置脚本文件生成Makefile。在那种情况下,用户只需运行/configure命令,而不是xmkmf。
4.2  XFree86 配置
4.2.1  XIIR5和XFree86简介
     XIIR5是针对UNIX系统的窗口系统。X Window 由MIT Consortium提出,有自由的版权,它允许任何源程序被使用,使用时只要将原来的版权注意事项包含进去即可。
    因为X Window是UNIX操作系统的标准窗口系统,所以也就有相当多的应用程序使用X Window,X Window有免费版本与商业版本。
     XFree86也是XIlR5的一个分支,主要支持Intel平台的UNIX操作系统和类似UNIX的操作系统。XFree86服务器部分源自x386 12版(它是随xIIR5-起公诸于世的X Window服务器),但是XFree86大部分是新开发的。从XFree86"1.3之后,最重要的改进是图形加速卡,这是一个全新的特性。
4.2.2 支持的硬件
    这是一个常见的问题,在此先做简单的说明。目前2.0版本的XFree86支持如下的显示卡硬件。
      非加速卡:
         Tseng ET3000,ET4000AX, ET4000/W32
         Western Digital/Paradise PVGAI
         WeStern DigtaI WD90C00,WD90C10,WD90C11,WD90C30
        Geoa GVGA
        Triden TVGA8800CS,TVGA8900B,TVGA8900C,TVGA8900CL,TVGA900
        ATI 28800 -4,28800-5,28800-a
        NCR  77C22,      77C22E
        Cirrus LogiC GLGD5420,CLGD5422,CLGD5424,CLGD6205,CLGD6215,
        CLGD6225,CLGD6235
        Compaq AVCA(cf the question the appendix)
        QAK OTIO67,OTI077
      加速卡:
       Cirrus CLGD5426,     CLGD5428
       Western  Digital WD90C31
       NoTE  WD90C33 在 XFree86-2.o 无法运行
    这些卡都支持256色(XF86_SVGA),而ATI和Cirrus的卡不支持单色模式(这两种卡只支持256色)。
    有关各种卡的说明可在/usr/X386/lib/Xll/etc目录下的README文档中找到。
4.2. 3  XFree86的获取
    本节主要针对Linux的可执行的软件而言。可执行的XFree86-2.0 for Linux软件可通过FTP协议到下面的站点取得:
            tsx-11.mt.edu:/pub/Linux/packages/Xll/XFree86-2.0
或者
            sunsite.unc.edu:/pub/Linux/xll/XFree86-2.0
      这些软件都是以gzip压缩的归档文件:
      XF86_8514.tar.gZ   IBM8514卡的服务器
      XF86_Mach32.tar.gz  Mach32卡的服务器
      XF86_Mach8.tar.gz  Mach8卡的服务器
      XF86_Mono.tar.gz   单色卡的服务器
      XF86_S3.tar.gz    S3卡的服务器
      XF86_SVGA.tar.gz  SVGA卡的服务器
      XF86_VGAI6.tar.gz l6VGA卡的服务器
      sf86_svr.2.0.tar.gz 以上所有卡的服务器
      xf86_bin_2.0.tar.gZ 一些常用的用户程序
      xf86_cfg-2.0.tar.gz  XDM配置文件和选择器
      xf86_fnt-2.0.tar.gz 字体
      xf86_kit-2.0.tar.gz  Linkkit用以建置X Window服务器
      Xf86_1ib-2.0.tar.gz 动态库、位图和字体
      xf86_man-2.0.tar.gz 联机手册
      xf86-pex-2.0.tar.gz  PEX库
      xf86-prg-2.0.tar.gz 静态库和头文件
      xf86-doc-2.0.tar.gz  XFree86-2.0的文档
      xf86-doc2-2.0.tar.gz  Xconfig的联机手册
   另外需要libc4.4.1  或更新的版本才能运行XFree86-2.0。而且必须安装David Engel的动态链接库ld.so 1.3或更新版本,这可以从tsx-11的镜像站点获取,目录名是/pub/Linux/packages/GCC。
    内存的需求是至少8MB物理内存和16MB虚拟内存(交换区方式)。若能小心管理和使用内存,4MB也是可以运行的。建议是至少有8MB的内存,因为用交换区方式会降低系统的性能。
    若要运行很消耗内存的程序,像gcc,那么用户至少应该有16MB物理内存和16MB虚拟内存。
    不必安装LinkKit软件包,除非有17MB的硬盘空间,如果完全安装该软件包,则需21MB空间。
    如果去掉其他不需要的服务器,也可以节省几MB的空间。
    安装之前,请备份己变更过的文件,以备不时之需。
    安装的步骤如下(请以root身份在/目录下执行):
              gzip-dC tarfilename |  tar xvvof -
     警告:这个命令的执行结果将会覆盖用户的旧的XFree86版本。
    安装之后,用户必须正确设置用户的系统。
     如何编译在该软件包中的INSTALL、README和README.Linux的几个文件中都有说明。
     如果要添加SVGA服务器的驱动程序,那么用户需要LinkKit软件包。LinkKit用户可在目录/usr/X386/lib/Server/VGADriverDoc下找到。
4.2.4 配置XFree86
    从2.0版开始,所有的XFree86 文件都被存放在一起,并用tar将其结合成一个文件--xf86-doc-2.0.tar.gz。
    用户必须取得这个文件,并详读其中的文件之后,才会正确地建立和运行XFree86。下面就是有关这些文件的一些说明:
    README.Config文件是有关搭建XFree86的简介,先看此文件,并依照其指示一步一步做。
    接下来用man命令查看Xconfig、XFree86和有关的服务器(xF86_SVGA、XF86_Mono、XF86_VGAI6、XF86_S3、XF86_Mach8、XF86_Mach32或XF86_8514等)的使用说明。
    如果无法确定使用的显示卡是哪一种,可以用SuperProbe程序未检查显示卡种类。不过若有显示卡的手册,那么依据手册的说明。
    要注意的是SuperProbe不一定能正确地检查出显示卡类型,在这种情况下XFree86的服务器很难正确运行。
    在AcceICards文件中列出了一些可以在XFree86-2.0版下正常运行的视频加速卡。看看自己的卡是否列在其中。可能有一些卡可能没有列在其中,但也能正常运行。若使用XS3,那么该看看README.XS3,因为要加入XS3服务器时,要对系统稍做一些改变。
    配置XFree86的一些问题可以用改变BIOS设置和缓存区的方法来解决。
    在安装时用户将需要如下的参数:
     1.屏幕规格(如水平和垂直的频率、频宽等等)。
     2.显示卡的名称。有些公司会用“S3”代表“accelerated”。
     3.用户的显示卡所提供的显示内存。
注意:WD90C3x显示卡在检测时钟会有问题。请先用XFree86-1.3服务器测得时钟,再将其记录在Xconfig文件中,然后就可以运行2.0版的服务器了。
     4.鼠标使用的协议和连接的设备。在Xconfig的联机手册中列出了可用的鼠标协议。
        以下是一些鼠标连接的设备名称:
        /dev/atibm ATI XL 总线型鼠标(注意:ATI GU 总线型鼠标事实上就是Logitech   busmouse)
      /dev/logibm Logitech总线型鼠标(注意:它使用总线型鼠标协议,而不是Logitech 协议)
      /dev/inportbm microsoft总线型鼠标
      /dev/psaux ps/2鼠标
  注意:上列的名称是新的名称,也许在旧的版本中都还是使用旧的名称。
下面给出新旧名称对照列表:

              新          旧                    主设备号     次设备号
            a=jbm:    bmouseatixl                l0              3
            1ogibm:    bmouselogitec              l0              0
            inportbm:  bmousems                  l0             2
            psaux:     bmouseps2 或 ps2aux        l0             1
    其他的鼠标就属于串行鼠标,所以也都连上一些串行端口,如/dev/ttyS? 或/dev/ytyS??。
    总线型鼠标(bus mousel)有时不易看出连接上哪一个设备,要判别就得将所有的驱动程序放到系统内核中,并在启动时看看启动时的信息,这些信息会说明系统所检测到的总线型鼠标是哪一种。此时用户就知道了它连上哪个设备。
    接下来查看README.Config这个文件,若用户的屏幕型号在modeDB.txt文件中没有被列出,应该选一个一般的模式。
    若调整或换一个模式,则请先详读VideoModes.doc文件,并依其指示去设置。
   警告:别人的Xconfig文件不一定适合自己用,因为各人有硬件设备有所不同。特别是屏幕模式的设置,要确定是自己的屏幕的规格所有的,以免损坏硬件。
   下面介绍如何配置非US-layout模式的键盘。
   若用户不改变原先标准的设置,服务器会自动启动US-american键盘模式,用户若要不同的设置,请看xmodmap的帮助说明。
    在sunsite.unc.edu:/pub/Linux/Xll/misc站点下中有xmodmaps关于语言键盘的几个设置实例。
    另外有几个特别键,用户可以定义新的对应。这方面请参考XFree86kbd(1)联机手册。
4.2.5 tinyx
    如果用户的内存不足以运行XFree86,可以试试tinyX软件。
    tinvX以XFree86为基准,所以安装或设置的方式与XFree86相同。
    要运行tinyX至少要有4MB物理内存和8MB交换区空间。目前的tinyX有几个版本,服务器程序可依前面的XFree86-2.0的说明去选择。软件的名称是:tinyX一YYY-2.0.tar.gz(YYY代表服务器名称)。
    此软件得可在Sunsite的FTP站点取得。取得之后先解压缩,然后设置Xconfig文件,在readme目录下也可以找到tinyX的一些相关文件,先看完这文件,再设置Xconfig文件。
    由于tinyX不包含完全版的XFree86-2.0,所以可能会在执行时出现程序不存在的信息。
4.2.6 X相关软件
      目前有许多X相关软件。在此介绍两个在X方面有比较大的影响的软件。
    4.2.6.1  xview3L5.1.tar.gz
    该软件源自Sun(TM)的xview3.2软件,是由Kenneth Osterberg修订的Linux版本。包含xview  toolkit及一些X Window的扩充等等。
    用户会觉得它是Open Look(TM)在X Window方面的扩充。
    要安装它,首先要解开归档文件,读取一些随附的说明文件(如README或install等等),然后,安装这个脚本。要完全安装此软件要有25MB的硬盘空间。
    要执行Xview至少要有8MB的内存,最好有16MB。另外,要在XFree86-2.0上运行xview,则共享库ld.so必须是1.3或以上的版本。
    4.2.6.2 Motif for Linux
    这是一个商业版的软件,所以只能用钱去买。
    从tsx-11站点下的目录/pub/Linux/advertisements下可找到Metrolink公司的产品广告。
    这个软件提供了不同的窗口管理器。其他的一些的窗口管理器程序可从Sunsite站点的目录/pub/Linux/Xll/Window-managers下找到。
    这些软件都有不问的设置方法。所以要设置这些窗口管理器就必须详读它们各自的安装文件,以便能正确安装。
      可以从下面的站点获取一些现成的X Window应用软件:
                sunsite.unc.edu/pub/Linux/xll
    或
            tsx-ll.mit.edu/pub/Llnux/binstire与/pub/linux/sources
4.2.7 X Window常见问题解答
 Q:用“x’命令来后动X,只看到网状的背景,却没有看到窗口,是不是在哪出错了?
 A:用户只是启动服务器,没有启动窗口管理器和其他的应用程序。一般的启动方式是用startx命令。         
 Q:有支持16位或24位的彩色模式吗?
 A:目前只支持1位,4位和8位的彩色模式。而且4位的服务器还处在实验阶段,可能会有错误。
 Q:服务器无法找到某些字体。
 A:检查用户的目录/usr/X386/lib/Xll/Xconfig 中的字体路径,是否包含这些路径,
 若有则执行mkfontdir命令可能会给用户一些帮助。
 Q:当结束X时,字体有时无法恢复正常,屏幕会出现奇怪的内容。
 A:此问题尚未完全解决,不过有些软件有时会有帮助,如runx和restoretext等。     这些软件可以从sunstie站点的/pub/Linux/libs目录下获取。
 Q:有一张正常的svGA卡,有IM8的显示内存。用此卡可以使用1152×900 或1024 ×1024的虚拟分辨率。但是用S3卡却不能,为什么?
 A:目前的S3卡无法用1152个像素点的线长度,所以用1280代替。而且S3服务器要IKB显存给鼠标,所以IMB的虚拟解析度是无法运行的。
   用户需要一些卡上的内存做字体与图素的快速存取之用,才能有最大的效率。所以这些内存并不是浪费的。在IM8显存的卡上,建议用1024×768和1152×800 分辨率。若使用后者,所剩的供字体快速存取的内存就有限了,因此当使用比较大的字体时,性能也有明显的差别。一般当字体的点数小于18时,还是很正常。
 Q:要用LinkKit来配置xF86_S3或XF86_vGA16服务器,在修改过sited.def和运行过mkmf后,执行make命令时却失败了,为什么?
 A:Linkkit的Imakefi1e有一些错误,用户可以修改Imakefi1e的第326行,把
   # if  XF86SVGAServer  |  |  XF86MonoServer
          改成
       #if      XF86SVGAServer        | |  XF86MonoServer     
  |  |  XF86VGAI6Server       |  |          xF86S3Server

阅读(5055) | 评论(0) | 转发(0) |
0

上一篇:没有了

下一篇:没有了

给主人留下些什么吧!~~