光电工程师社区

标题: linux系统管理 [打印本页]

作者: suncon    时间: 2003-11-29 23:59
标题: linux系统管理
linux系统管理

常用工具

目 录
常用工具
shell命令
用户常用
文件或目录处理
文件内容操作
文件传输
文件权限的设定
进程控制
命令管道
输入输出控制
编辑
Vi
Emacs
归档和压缩
tar和gzip
rpm
其他
.arc
.arj
.lzh (.lha)
.rar
.sit
.zip
.zoo
邮件
快捷键

--------------------------------------------------------------------------------

作者: suncon    时间: 2003-11-30 00:01
标题: linux系统管理
shell命令

bash 是大多数Linux系统的缺省外壳。它克服了Bourne 外壳的缺点,又和Bourne 外壳完全兼容。
Bash有以下的特点:
·补全命令行。当你在bash 命令提示符下输入命令或程序名时,你不必输全命令或程序名,按Tab 键,bash将自动补全命令或程序名。
·通配符。在bash下可以使用通配符* 和?。*可以替代多个字符,而?则替代一个字符。
·历史命令。bash 能自动跟踪你每次输入的命令,并把输入的命令保存在历史列表缓冲区。缓冲区的大小由HISTSIZE变量控制。当你每次登录后,home 目录下的.bash_history 文件将初始化你的历史列表缓冲区。你也能通过history 和fc 命令执行、编辑历史命令。
·别名。在bash下,可用alias 和unalias 命令给命令或可执行程序起别名和清除别名。这样你可以用自己习惯的方式输入命令。
·输入/输出重定向。输入重定向用于改变命令的输入,输出重定向用于改变命令的输出。输出重定向更为常用,它经常用于将命令的结果输入到文件中,而不是屏幕上。输入重定向的命令是,输出重定向的命令是。
·管道。管道用于将一系列的命令连接起来。也就是把前面的命令的输出作为后面的命令的输入。管道的命令是|。
·提示符。bash 有两级提示符。第一级提示符就是你登录外壳时见到的,缺省为$。你可以通过重新给ps1变量赋值来改变第一级提示符。当bash需要进一步提示以便补全命令时,会显示第二级提示符。第二级提示符缺省为,你可以通过重新给ps2变量赋值来改变第二级提示符。一些特殊意义的字符也可以加入提示符赋值中。
·作业控制。作业控制是指在一个作业执行过程中,控制执行的状态。你可以挂起一个正在执行的进程,并在以后恢复该进程的执行。按下Ctrl+Z 挂起正在执行的进程,用bg命令使进程恢复在后台执行,用fg命令使进程恢复在前台执行。

这里列出的仅仅是最常用的bash命令子集,其他不太常用,但是在某方面有特殊用途的命令会在这个技术问题的目录下专门提到(例如:ncheck命令会在文件系统维护里介绍)

[目录]

--------------------------------------------------------------------------------


用户常用

查找
find命令用于搜索目录树,并对目录树上的所有文件执行某种操作,参数是目录名表(指出从哪些起点开始搜索),还可给出一个或多个选项,规定对每个文件执行什么操作。
find / -print 将列出当前工作目录下的目录树的每一个文件。
find / -user bob -print 将列出在系统中可找到的属于bob用户的所有文件。
find /usr/bob -perm 666 -print 将列出/usr/bob目录树下所有存取许可为666的文件。若将666改为-666则将列出所有具有包含了666在内的存取许可方式的文件(如777)。
find /usr/bob -type b -print 将列出/usr/bob目录树下所有块特别文件(c为字符特别文件)。
find / -user root -perm -4000 -exec ls -l {} \&#59; 是一个较复杂的命令,-exec COMMand \&#59;允许对所找到的每个文件运行指定的命令COMMand。若COMMand中含有{ },则{ }将由f i n d所找到的文件名替换。COMMand必须以\ &#59;结束。
各选项可组合使用以达到更强的功能。
远程登陆
语法:rlogin 主机名[-1 用户名]
例如:
rlogin doc 远程登录到工作站doc 中。
rlogin doc -l user 使用user 帐号登录到工作站doc 中。

语法:telnet 主机名或telnet IP地址
例如:
telnet doc
telnet 140.109.20.251

更改密码
语法: passwd
Old password: 输入旧密码
New password: 输入新密码(最好为6~8字,英文字母与数字混合)
Retype new password: 再输入一次密码

检查自己所属的工作组名称
语法:groups

查看系统中的用户
语法: who 或finger
语法: who
语法: finger 用户名或finger 用户名@域名

改变用户名
语法: su 用户名
例如:
su user 进入用户user 的帐号。
passwrod : 输入用户user 的密码

查看自己用户名
语法: whoami 查看登录时的用户名。
语法: whoami 查看当前的用户名。若已执行过su命令,则显示出此用户的用户名。

查看当前系统上所有工作站的用户
语法: rusers
按Ctrl+C 结束

与某工作站上的用户交谈
语法: talk 用户名@主机名或talk 用户名@ I P地址
例如:
1) 可先利用rusers 指令查看网络上的用户;
2) 假设自己的帐号是u84987 ,在工作站indian 上使用,现在想要与doc 上的u84123 交谈。
talk u84123@doc
此时屏幕上将会出现等待画面

在对方( u84123 )屏幕上将会出现下列信息:
Message from Talk_Daemon@Local_host_name at xx:xx
talk: connection requested by u84987@indian
talk: respond with: talk u84987@indian
此时对方(u84123) 必须执行talk u84987@indian 即可互相交谈。最后可按Ctrl + C结束。

显示文档帮助
语法: man 命令
例如:
man ls

语法:howto 主题
例如:
howto man


作者: suncon    时间: 2003-11-30 00:02
标题: linux系统管理
文件或目录处理

列出文件或目录下的文件名。
语法: ls [-atFlgR] [name]
name :文件名或目录名。
例如:
ls 列出目前目录下的文件名。
ls -a 列出包括以.开始的隐藏文件的所有文件名。
ls -t 依照文件最后修改时间的顺序列出文件名。
ls -F 列出当前目录下的文件名及其类型。以/ 结尾表示为目录名,以* 结尾表示为
可执行文件,以@ 结尾表示为符号连接。
ls -l 列出目录下所有文件的权限、所有者、文件大小、修改时间及名称。
ls -lg 同上,并显示出文件的所有者工作组名。
ls -R 显示出目录下以及其所有子目录的文件名。
改变当前工作目录
语法:cd [name]
name:目录名、路径或目录缩写。
例如:
cd 改变目录位置至用户登录时的工作目录。
cd dir1 改变目录位置至d i r 1目录下。
cd ~user 改变目录位置至用户的工作目录。
cd .. 改变目录位置至当前目录的父目录。
cd ../user 改变目录位置至相对路径user 的目录下。
cd /../.. 改变目录位置至绝对路径的目录位置下。
cd ~ 改变目录位置至用户登录时的工作目录。

复制文件或目录
语法: cp [-r] 源地址目的地址
例如:
cp file1 file2 将文件file1 复制成file2。
cp file1 dir1 将文件file1 复制到目录dir1 下,文件名仍为file1。
cp /tmp/file1 . 将目录/tmp 下的文件file1 复制到当前目录下,文件名仍为file1。
cp /tmp/file1 file2 将目录/tmp 下的文件file1 复制到当前目录下,文件名为file2。
cp -r dir1 dir2 复制整个目录。

移动文件目录或修改名称
语法: mv 源地址目的地址
例如:
mv file1 file2 将文件file1更名为file2。
mv file1 dir1 将文件file1移到目录dir1 下,文件名仍为file1。
mv dir1 dir2 将目录dir1 更改为目录dir2。

建立新的目录
语法: mkdir 目录名
例如:
mkdir dir1 建立一新目录dir1。

删除目录
语法: rmdir 目录名或rm 目录名
例如:
rmdir dir1 删除目录dir1,但dir1 下必须没有文件存在,否则无法删除。
rm -r dir1 删除目录dir1及其子目录下所有文件。

删除文件
语法: rm 文件名
例如:
rm file1 删除文件名为file1 的文件。
rm file? 删除文件名中有五个字符且前四个字符为file 的所有文件。
rm f* 删除文件名中以f 为字首的所有文件。

列出当前所在的目录位置
语法: pwd

查看文件内容
语法: cat 文件名
例如:
cat file1 以连续显示方式,查看文件名file1 的内容。

分页查看文件内容
语法: more 文件名或cat 文件名| more
例如:
more file1 以分页方式查看文件名file1 的内容。
cat file1 | more 以分页方式查看文件名file1 的内容。

查看目录所占磁盘容量
语法: du [-s] 目录
例如:
du dir1 显示目录dir1 的总容量及其子目录的容量(以KB 为单位)。
du -s dir1 显示目录dir1 的总容量。

文件的链接
同一文件,可拥有一个以上的名称,也就是把一个文件进行链接。
语法:ln 老文件名新文件名
例如:
ln file1 file2 将文件file2链接至文件file1。
语法:ln -s 老文件名新文件名
例如:
ln -s file3 file4 将文件file4 链接至文件file3。




作者: suncon    时间: 2003-11-30 00:06
标题: linux系统管理
文件内容操作

改变文件或目录的最后修改时间
语法:touch name
name:文件名或目录名。
2.3.21 文件中字符串的查寻
语法:grep string file
例如:
grep abc file1 寻找文件f i l e 1中包含字符串abc 所在行的文本内容。
查寻文件或命令的路径
语法:whereis command 显示命令的路径。
语法:which command 显示命令的路径,及使用者所定义的别名。
语法:whatis command 显示命令功能的摘要。
语法:find search-path -name filename -print 搜寻指定路径下某文件的路径。
例如:
find / -name file1 -print 自根目录下寻找文件file1 的路径。

比较文件或目录的内容
语法:diff [-r] name1 name2
name1 name2:可同时为文件名或目录名。
例如:
diff file1 file2 比较文件file1 与file2 内各行的不同之处。
diff -r dir1 dir2 比较目录dir1 与dir2 内各文件的不同之处。

文件打印输出
用户可用.login 文件中的setenv PRINTER来设定打印机名。
例如:
setenv PRINTER sp 设定自sp 打印机打印资料。

一般文件的打印
语法:lpr [-P打印机名] 文件名
例如:
lpr file1 或lpr -Psp file1 自sp打印机打印文件file1。
语法:enscript [-P打印机名] 文件名
例如:
enscript file3 或enscript -Psp file3 自sp打印机打印文件file3。

troff 文件的打印
语法:ptroff [-P打印机名] [-man][-ms] 文件名
例如:
ptroff -Psp -man /usr/man/man1/lpr1 以troff 格式,自sp 打印机打印lpr1 命令的使用说明。


作者: suncon    时间: 2003-11-30 00:06
标题: linux系统管理
文件传输

1. 拷贝文件或目录至远程工作站
语法: rcp [-r] 源地址主机名:目的地址
源地址文件名、目录名或路径。
主机名工作站名。目的地址路径名称。
例如:
rcp file1 doc:/home/user 将文件f i l e 1拷贝到工作站doc 路径/home/user 下。
rcp -r dir1 doc:/home/user 将目录d i r 1拷贝到工作站doc 路径/home/user 下。
2. 自远程工作站,拷贝文件或目录
语法: rcp [-r] 主机名:源地址目的地址
主机名工作站名。
源地址路径名。
目的地址、文件名、目录名或路径。
例如:
rcp doc:/home/user/file1 file2 将工作站d o c路径/home/user 下的目录d i r 1,拷贝到当前工作站的目录下,目录名仍为d i r 1。
rcp -r doc:/home/user/dir1 . 将工作站doc 路径/home/user 下的目录d i r 1,拷贝到当前工作站的目录下,目录名仍为d i r 1。

3. 本地工作站与远程工作站之间的文件传输
必须拥有远程工作站的帐号及密码,才可进行传输工作。
语法: ftp 主机名或ftp ip地址
例如:
ftp doc 与远程工作站doc 之间进行文件传输。
Name (doc:user-name): 输入帐号
Password (doc:user-password): 输入密码
ftp help 列出ftp 文件传输时可使用的命令。
ftp !ls 列出本地工作站当前目录下的所有文件名。
ftp !pwd 列出本地工作站当前所在的目录位置。
ftp ls 列出远程工作站当前目录下的所有文件名。
ftp dir 列出远程工作站当前目录下的所有文件名。
ftp dir . |more 分页列出远程工作站当前目录下的所有文件名。
ftp pwd 列出远程工作站当前所在的目录位置。
ftp cd dir1 更改远程工作站的工作目录位置至dir1 之下。
ftp get file1 将远程工作站的文件f i l e 1拷贝到本地工作站中。
ftp put file2 将本地工作站的文件f i l e 2拷贝到远程工作站中。
ftp mget *.c 将远程工作站中扩展文件名为c 的所有文件拷贝到本地工作站中。
ftp mput *.txt 将本地工作站中扩展文件名为txt 的所有文件拷贝到远程工作站中。
ftp prompt 切换交互式指令(使用mput/mget 时不是每个文件皆询问y e s / n o )。
ftp quit 结束ftp 工作。
ftp bye 结束ftp 工作。
注意从PC与工作站间的文件传输也可透过在PC端的FTP指令进行文件传输,指令用法与上述指令大致相同。


作者: suncon    时间: 2003-11-30 00:07
标题: linux系统管理
文件权限的设定

改变文件或目录的读、写、执行权限
语法:chmod [-R] mode name
name:文件名或目录名。
mode: 3个8位数字或rwx的组合。r-read (读),w-write (写),x-execute (执行),u-user (当前用户),g-group(组),o-other(其他用户)。
例如:
chmod 755 dir1 对于目录dir1,设定成任何使用者皆有读取及执行的权利,但只有所
有者可做修改。
chmod 700 file1 对于文件file1,设定只有所有者可以读、写和执行的权利。
chmod u+x file2 对于文件file2,增加当前用户可以执行的权利。
chmod g+x file3 对于文件file3,增加工作组使用者可执行的权利。
chmod o-r file4 对于文件file4,删除其他使用者可读取的权利。
改变文件或目录的所有权
语法:chown [-R] 用户名name
name:文件名或目录名。
例如:
chown user file1 将文件file1 改为用户user 所有。
chown -R user dir1 将目录dir1及其子目录下面的所有文件改为用户user 所有。


改变文件或目录工作组所有权
语法:chgrp [-R] 工作组名name
name:文件名或目录名
例如:
chgrp vlsi file1 将文件file1 的工作组所有权改为vlsi 工作组所有。
chgrp -R image dir1 将目录dir1及其子目录下面的所有文件,改为image 工作组所有。



作者: suncon    时间: 2003-11-30 00:09
标题: linux系统管理
进程控制

1.查看系统中的进程
语法:ps [-aux]
例如:
p s或ps -x 查看系统中,属于自己的进程。
ps -au 查看系统中,所有用户的进程。
ps -aux 查看系统中,包含系统内部的及所有用户的进程。
2. 结束或终止进程
语法:kill [-9] PID
PID:利用ps 命令所查出的进程号。
例如:
kill 456或kill -9 456 终止进程号为456 的进程。

3. 在后台执行进程的方式
语法:命令
例如:
cc file1.c  将编译file1.c 文件的工作置于后台执行。
语法:按下Control+Z键,暂停正在执行的进程。键入bg命令,将暂停的进程置于后台继
续执行。
例如:
cc file2.c
^ Z
Stopped
bg

4. 查看正在后台中执行的进程
语法:jobs

5. 结束或终止后台中的进程
语法:kill %n
n:利用jobs命令查看出的后台作业号
例如:
kill % 终止在后台中的第一个进程。
kill %2 终止在后台中的第二个进程。



作者: suncon    时间: 2003-11-30 00:09
标题: linux系统管理
命令管道

语法:命令1 | 命令2 将命令1的执行结果送到命令2,做为命令2的输入。
例如:
ls -Rl | more 以分页方式列出当前目录及其子目录下所有文件的名称。
cat file1 | more 以分页方式列出文件file1 的内容。


输入输出控制

1. 标准输入的控制
语法:命令 文件将文件做为命令的输入。
例如:
mail -s “mail test” wesongzhou@hotmail.com  file1 将文件file1 当做信件的内容,主
题名称为mail test,送给收信人。
2. 标准输出的控制
语法:命令 文件将命令的执行结果送至指定的文件中。
例如:
ls -l  list 将执行“ls -l” 命令的结果写入文件list 中。
语法:命令! 文件将命令的执行结果送至指定的文件中,若文件已经存在,则覆盖。
例如:
ls -lg ! list 将执行“ls - lg” 命令的结果覆盖写入文件list 中。
语法:命令 文件将命令执行时屏幕上所产生的任何信息写入指定的文件中。
例如:
cc file1.c  error 将编译file1.c 文件时所产生的任何信息写入文件error 中。
语法:命令 文件将命令执行的结果附加到指定的文件中。
例如:
ls - lag  list 将执行“ls - lag” 命令的结果附加到文件list 中。
语法:命令 文件将命令执行时屏幕上所产生的任何信息附加到指定的文件中。
例如:
cc file2.c  error 将编译file2.c 文件时屏幕所产生的任何信息附加到文件error 中。

作者: suncon    时间: 2003-11-30 00:10
标题: linux系统管理
Vi

Vi 输入模式
要如何输入资料呢?有好几个指令可以进入输入模式:

新增 (append)
a 从游标所在位置後面开始新增资料,游标後的资料随新增资料向後移动。
A 从游标所在列最後面的地方开始新增资料。

插入 (insert)
i 从游标所在位置前面开始插入资料,游标後的资料随新增资料向後移动。
I 从游标所在列的第一个非空白字元前面开始插入资料。

开始 (open)
o 在游标所在列下新增一列并进入输入模式。
O 在游标所在列上方新增一列并进入输入模式。

也许文字叙述看起来有点繁杂,但是只要实际操作一下马上可以了解这些操作方式。实务很重要,尤其是电脑方面的东西随时可以尝试及验证结果。极力建议实际去使用它而不要只是猛 K 文件,才有事半功倍的效用。(注:此段为废话。)


Vi 基本编辑

配合一般键盘上的功能键,像是方向键、[Insert] 、[Delete] 等等,现在你应该已经可以利用 vi 来处理文字资料了。当然 vi 还提供其他许许多多功能让文字的处理更形方便,有兴趣的看倌请继续。

在继续下去之前先来点 BCC 吧。电脑有许多厂牌,不同的硬体及作业系统。PC 也不是仅仅只有 IBM PC 及其相容品而已。事实上,包括键盘,终端机等等往往都有不同的规格。这代表什麽?

在文书编辑软体上会遇这样的问题,某些电脑的键盘上没有特定的几个功能键!那麽不就有某些功能不能用了?这个问题在 Unix 系统上也一样,几乎各大电脑厂商都有自己的 Unix 系统,而 vi 的操作方法也会随之有点出入。我们固然可以用 PC 的键盘来说明 vi 的操作,但是还是得提一下这个问题。


删除与修改

何谓编辑?在这里我们认为是文字的新增修改以及删除,甚至包括文字区块的搬移、复制等等。这里先介绍 vi 的如何做删除与修改。(注意:在 vi 的原始观念里,输入跟编辑是两码子事。编辑是在指令模式下操作的,先利用指令移动游标来定位要进行编辑的地方,然後才下指令做编辑。)

x  删除游标所在字元。
dd 删除游标所在的列。
r  修改游标所在字元,r 後接著要修正的字元。
R  进入取代状态,新增资料会覆盖原先资料,直到按 [ESC] 回到指令模式下为止。
s  删除游标所在字元,并进入输入模式。
S  删除游标所在的列,并进入输入模式。

其实呢,在 PC 上根本没有这麽麻烦!输入跟编辑都可以在输入模式下完成。例如要删除字元,直接按 [Delete] 不就得了。而插入状态与取代状态可以直接用 [Insert] 切换,犯不著用什麽指令模式的编辑指令。不过就如前面所提到的,这些指令几乎是每台终端机都能用,而不是仅仅在 PC 上。

在指令模式下移动游标的基本指令是 h, j, k, l 。想来各位现在也应该能猜到只要直接用 PC 的方向键就可以了,而且无论在指令模式或输入模式下都可以。多容易不是。

当然 PC 键盘也有不足之处。有个很好用的指令 u 可以恢复被删除的资料,而 U 指令则可以恢复游标所在列的所有改变。这与某些电脑上的 [Undo] 按键功能相同。


Vi 进阶应用

相信现在对於 vi 应该已经有相当的认识。处理文字也不会有什麽麻烦才对。如果有兴趣善用 vi 的其它功能进一步简化操作过程,不妨继续看下去。


移动游标

由於许多编辑工作是藉由游标来定位,所以 vi 提供许多移动游标的方式,这个我们列几张简表来说明(这些当然是指令模式下的指令):

┌—————┬—————————————┬—————┐
│指令   │说明          │功能键  │
├—————┼—————————————┼—————┤
│0    │移动到游标所在列的最前面 │[Home]  │
├—————┼—————————————┼—————┤
│$    │移动到游标所在列的最後面 │[End]   │
├—————┼—————————————┼—————┤
│[CTRL][d]│向下半页         │     │
├—————┼—————————————┼—————┤
│[CTRL][f]│向下一页         │[PageDown]│
├—————┼—————————————┼—————┤
│[CTRL]│向上半页         │     │
├—————┼—————————————┼—————┤
│[CTRL]│向上一页         │[PageUp] │
└—————┴—————————————┴—————┘
┌——┬—————————————————┐
│指令│说明              │
├——┼—————————————————┤
│H  │移动到视窗的第一列        │
├——┼—————————————————┤
│M  │移动到视窗的中间列        │
├——┼—————————————————┤
│L  │移动到视窗的最後列        │
├——┼—————————————————┤
│b  │移动到下个字的第一个字母     │
├——┼—————————————————┤
│w  │移动到上个字的第一个字母     │
├——┼—————————————————┤
│e  │移动到下个字的最後一个字母    │
├——┼—————————————————┤
│^  │移动到游标所在列的第一个非空白字元│
└——┴—————————————————┘
┌——┬———————————————————┐
│指令│说明                │
├——┼———————————————————┤
│n- │减号移动到上一列的第一个非空白字元  │
│  │前面加上数字可以指定移动到以上 n 列  │
├——┼———————————————————┤
│n+ │加号移动到下一列的第一个非空白字元  │
│  │前面加上数字可以指定移动到以下 n 列  │
├——┼———————————————————┤
│nG │直接用数字 n 加上大写 G 移动到第 n 列│
└——┴———————————————————┘
┌————┬———————————————┐
│指令  │说明            │
├————┼———————————————┤
│fx   │往右移动到 x 字元上     │
│Fx   │往左移动到 x 字元上     │
├————┼———————————————┤
│tx   │往右移动到 x 字元前     │
│Tx   │往左移动到 x 字元前     │
├————┼———————————————┤
│&#59;    │配合 ft 使用,重复一次   │
│,    │配合 ft 使用,反方向重复一次│
├————┼———————————————┤
│/string │往右移动到有 string 的地方  │
│?string │往左移动到有 string 的地方  │
├————┼———————————————┤
│n    │配合 /? 使用,重复一次   │
│N    │配合 /? 使用,反方向重复一次│
└————┴———————————————┘
┌————┬———————————————————┬——————————┐
│指令  │说明                │备注        │
├————┼———————————————————┼——————————┤
│n(   │左括号移动到句子的最前面       │句子是以      │
│    │前面加上数字可以指定往前移动 n 个句子 │! . ? 三种符号来界定│
│n)   │右括号移动到下个句子的最前面     │          │
│    │前面加上数字可以指定往後移动 n 个句子│          │
├————┼———————————————————┼——————————┤
│n{   │左括弧移动到段落的最前面       │段落是以      │
│    │前面加上数字可以指定往前移动 n 个段落 │段落间的空白列界定 │
│n}   │右括弧移动到下个段落的最前面     │          │
│    │前面加上数字可以指定往後移动 n 个段落│          │
└————┴———————————————————┴——————————┘

不要尝试背诵这些指令,否则後果自行负责。它们看起来又多又杂乱,事实上这是文字叙述本身的障碍。再强调一次,实际去使用它只要几次就可以不经大脑直接下达这些奇奇怪怪的指令,远比死记活背搞得模模糊糊强多了。(注:若真的不经大脑而误删资料与我无关。另,此段为废话。)


进阶编辑指令

这些编辑指令非常有弹性,基本上可以说是由指令与范围所构成。例如 dw 是由删除指令 d 与范围 w 所组成,代表删除一个字 d(elete) w(ord) 。

指令列表如下:

d  删除(delete)
y  复制(yank)
p  放置(put)
c  修改(change)

范围可以是下列几个:

e  游标所在位置到该字的最後一个字母
w  游标所在位置到下个字的第一个字母
b  游标所在位置到上个字的第一个字母
$  游标所在位置到该列的最後一个字母
0  游标所在位置到该列的第一个字母
)  游标所在位置到下个句子的第一个字母
(  游标所在位置到该句子的第一个字母
}  游标所在位置到该段落的最後一个字母
{  游标所在位置到该段落的第一个字母

说实在的,组合这些指令来编辑文件有一点点艺术气息。不管怎麽样,它们提供更多编辑文字的能力。值得注意的一点是删除与复制都会将指定范围的内容放到暂存区里,然後就可以用指令 p 贴到其它地方去,这是 vi 用来处理区段拷贝与搬移的办法。

某些 vi 版本,例如 Linux 所用的 elvis 可以大幅简化这一坨指令。如果稍微观察一下这些编辑指令就会发现问题其实是定范围的方式有点杂,实际上只有四个指令罢了。指令 v 非常好用,只要按下 v 键,游标所在的位置就会反白,然後就可以移动游标来设定范围,接著再直接下指令进行编辑即可。

对於整列操作, vi 另外提供了更方便的编辑指令。前面曾经提到过删除整列文字的指令 dd 就是其中一个;cc 可以修改整列文字;而 yy 则是复制整列文字;指令 D 则可以删除游标到该列结束为止所有的文字。


档案指令

档案指令多以 : 开头,跟编辑指令有点区别。例如前面提到结束编辑的指令就是 :q。
现在就简单说明一下作为本篇故事的结尾:


:q 结束编辑(quit)
如果不想存档而要放弃编辑过的档案则用 :q! 强制离开。
:w 存档(write)
其後可加所要存档的档名。
可以将档案指令合在一起,例如 :wq 即存档後离开。
zz 功能与 :wq 相同。

另外值得一提的是 vi 的部份存档功能。可以用 :n,mw filename 将第 n 列到第 m 列的文字存放的所指定的 filename 里去哩。时代在变,世界在变, vi 也在变,不过大致上就这样。好了,但愿从此以後王子跟公主过著幸福快乐的生活。


作者: suncon    时间: 2003-11-30 00:12
标题: linux系统管理
Emacs

Emacs 启动:
直接打emacs, 如果有X-windows就会开视窗. 如果不想用X 的版本,
就用 emacs -nw   (No windows)起动.
符号说明
C-X 表示按住CTRL键, 然後按X, 再把CTRL, X一起放开.
M-X     META         META

在没有META键的电脑上, M-X 等於先按 ESC键, 接著按 X键.
Sun上面META键就是菱形的那个键.
有些系统META键就是ALT键.(或者某一边的ALT键)

C-X或 M-X的X没有大小写分别.
Emacs按键命令基本上是一串C-chr和M-chr组成的.
超过两个以上的按键命令, Emacs会在萤幕最下面一行显示你按过什麽.
这一行叫作mini buffer

结束Emacs按 C-x C-c

取消执行 C-g
有些Emacs命令会跑很久, 可以用C-g中断之. 按错键也可以按C-g取消.

上下移动  C-p 向上 (previous line) C-n向下(next line)
左右移动  C-f 向右 (forward) C-b 向左 (backward)

其实Emacs内部没有行的概念, 把一篇文章放在一个大buffer
里面, 所以C-f (forward)就是向档尾移动, C-b (backward)
是移回去的意思, 一次一个字.

翻页 下一页 C-v (view next screen)
  上一页 M-v

翻页时,上一 末尾会留一点在萤幕最上面,以维持连续性.

Emacs在游标接近萤幕最下方时会自动跳半页, 把档案往前挪一点,
方便阅读.

重画萤幕 C-L

Emacs里面游标的专有名词叫point. point == 游标目前的 点

游标一次跳一个字(word) M-f 往後跳 M-b

注意 C-f 与 M-f, C-b 与 M-b的对称性.

移到行头 C-a 行尾 C-e
移到句首 M-a 到句尾 M-e
(M-a 到上一个句点後面,一个句子的起头.
M-e 到句点後面)

移到档头 M- 档尾 M-

删除游标目前指的/後面的字 C-d
   前面的字 DEL (Delete键)
DEL的正名叫Rubout (Rub out)

M-DEL 往回删一个字(word)
M-d  往前删 (游标後面)
C-k  删至行尾 (kill)
M-k  删到一句子结尾(删到句点) (kill)


注意Backspace = C-h 在Emacs下是help的意思
後面有(kill)的, 表示此删除的动作是kill, 不太等於delete.
emacs会把kill掉的东西放到kill ring去, 算是一种暂存的地方,
以後可以叫出来.见 yank说明.


Undo: C-x u
C-_ 等於 C-x u  有些DEC终端机, C-/就是C-_
        有时等於C-Shift- -

重复执行

举例, 向右移 8个字, C-u 8 C-f
C-u 在Emacs里是蛮特别的,用来设定一些引数(argument/repeat count)
给其後的命令.

C-u 2 0 C-n 向下移 20行

有一个特别的例外, C-u 3 C-v 不是翻三页, 而是整个萤幕向上移三行.
据说这比较有意义.

C-u 1 0 C-x u  UNDO 10次

给C-L一个引数会怎麽样:
C-u 0 C-l 会重画萤幕,并且把目前的行移到萤幕第一行.

另外, C-u 100  等於 M-100
  C-u 数字 等於 M-数字

X windows 下,
C-left C-right 一次移一个字(word).
C-up C-down 移动一段 (paragraphs/C语言的话是block)
Home = C-a
End = C-e
C-Home = M-
C-end = M-
PgUp PgDn = M-v C-v
设定重覆次数更加简单,
比如要向右移10个字 C-1 C-0 right-arrow
就是按住CTRL, 然後打10就对了, 比 C-u 1 0 简单.

Mouse中键用来选取有hi-light的地方.
  右键是menu-button

如果不小心按两次ESC, 等於 M-ESC, 会有一个讯息跑出来
说你按到一个被disable的命令. 这是高级指令, 作者认为
初学者用不道,所以会问你要不要启动它, 一般回答no.

如果某一行太长, 萤幕显示不下, Emacs会在萤幕最右边打个$,
表示此行未完,右边还有.

把一行拆成两行: 在想拆处按Enter即可.
合并两行为一行: 在行尾按C-d (或行首按DEL)

Yank: 吐出被删掉的(killed)东西.

只要用kill (C-k, M-k等) 删除, 超过一个字的资料,
emacs就会把它存起来, 然後C-y 可以把它叫出来.
功能跟Cut  Paste一样. Kill 和delete不一样, 只有被
kill掉的东西才能用yank吐回来.

游标在同一地方不动, 连续kill掉的资料会被当成一次kill掉的,
yank时会一起回来.

被Kill掉的资料是放在称作 kill ring的资料结构上面, ring就是个圆圈,
被kill掉的东西会依序摆在圆圈上. yank 会放回最近一次kill掉的资料.
如果不是你想要的话, 用M-y 可以换. (M-y就是告诉emacs, 不对不对,
我不是要这一个,换前一个给我).

M-y 要紧接在C-y之後.

拷贝文字的方法== 连续 C-k 几次, 把要拷贝的行全部删掉,
然後按 C-y 弄回来. 再到想复制的地方按一次C-y, 就成了.

把要拷贝的资料kill掉在yank回来好像很笨. 是有比较文明的
方法, 那就是M-w, 不过较麻烦.

首先,要先设标记. Mark 用 C-SPC 或 C-@ 设. 然候
把游标移到另一端, 按 M-w 就可以把 mark 到 point间的
字存到kill ring上. point 就是游标的意思.

Emacs不会把Mark起来的地方?*** ighlight表示, 除非在X下.
在X下, 可以用M-w 来拷贝用滑鼠反白的文字.

kill  yank 就是 cut  paste的意思.


以上大部份指令对Bash的命令列编辑也有效

档案操作
读档: Emacs术语叫 finding a file.
C-x C-f 然後在mini-buffer输入档名. 输入档名时, SPC键有
auto-complete的功能,或者会秀出到目前为止档名前几
个字和输入一样的. (TAB键也有类似功能)

C-x C-f 叫 find-file

C-x C-s 存档 (save current file, save current buffer)
C-x s  存所有的档

C-x i  插入档案 把另外的档案的内容读入目前编辑区内

视窗
Emacs把档案读进来,存在buffer中.
我们透过window来看/编辑buffer.

两个视窗会把萤幕切成两部份, 他们可以同时显示
相同的, 或不同的档案.

对初学者而言, 最需要的是记住怎样让不想要的视窗消失:

C-x 0 关掉目前的视窗
C-x 1 会让目前的视窗占满整个萤幕 (One Window),
  取消/关掉其他的视窗.

Emacs里面有许多功能都会开一个小视窗来和使用者沟通, 显示讯息.
有时候不会自动消失很讨厌, C-x 1 就很有用.

另一个功能是如何跳到另一个视窗.
C-x o (other-window)


C-x 2 把目前的视窗切成两个 (水平分割)
C-x 3           (垂直分割)
C-x 4 是一串与视窗有关的指令.
C-x 4 是一串与视窗有关的指令.
C-x 5 则是扩展到X的视窗, 称为frame.
  C-x 5 2 就是再开另一个X视窗 (frame).


多档编辑
C-x C-b 看目前有那些buffer (buffer就是emacs放开起的档案的地方).
C-x b 然後在minibuffer输入buffer的名字,可以切换编辑buffer.
  TAB键也有作用. 有些内部的buffer (就是没有档案的buffer),
  是用*开头和结束, 这个也要打, 如*scratch*

最候提醒:
C-x 1 可以把多馀的视窗关掉.


Emacs扩充指令

前面介绍的emacs按键大部份都是C-chr 或者 M-chr的形式.
这是最简单的按法, 由一对按键构成一个指令.

Emacs的按键可以超过2个以上. 如 C-x 1 或 C-x C-b.
一般超过一个按键组合的命令都是用C-x 开头.

另外你也可以直接下命令. 按 M-x 之後就可以打一个Emacs命
令来执行. 一般这些命令名字都很长, 不过都不常用. 等一下
我们会介绍一些. 还有介绍怎麽把这些命令设成按键指令.

C-x C-c 就是结束Emacs. 不过一般Emacs很笨重, 一旦起动就不轻易
退出. 所以比较常用的是C-z

C-z 把Emacs暂停, 回到命令列. 当你下次再需要编辑时,打fg %emacs
就可以把Emacs唤醒.

在X下, C-z会把emacs缩成icon


mode line

emacs编辑画面由 编辑区(buffer) 状态列 (modeline) 和对话区 (minibuffer)
构成. 这里解释 modeline 显示的讯息.

以下是个范例:

--**-XEmacs: xemacs.qs   (Fundamental)----74%-------

由後面往前解释, 74% 表示游标的位置.

(Fundamental)表示编辑模式.这是最原始的模式. 编辑不同种类的文章
可能希望用不同的模式, 比如说C-mode, lisp-mode, tex-mode, text-mode
等等. 在不同模式下可能多一些按键出来. 举例text-mode.
  M-x text-mode
可以切入text-mode, 这是一般人编辑文字使用的模式. 和Fundamental mode
没什麽差异. 不过游标移动时, Emacs对一个字的定义就有所不同, 因而
M-f M-b 等移动一个字, 一个段落的指令就可能会停在标点符号的前面.
此时状态列变为... (Text)----70%---

以上说的是Major mode. 另外还有minor mode, 其实就是一些额外的功能.
比如说, M-x auto-fill-mode 则状态列显示 (Text Fill).
auto-fill就是自动断行, 让文章每行固定有70个字.

M-X fundamental-mode 可以变回来.

这里要说明一下, emacs在 minibuffer下有auto-completion的功能,
也就是打M-x fund 然後按 SPC, 它会自动补全 fundamental-mode,
不用全打. 如果有两个以上的选择, 它会告诉你. 这个功能对
find-file (C-x C-f)等等档案编辑功能也有效. 前面提过.
最後解释两个**号. 右边的*表示文章被修改过了.
左边的* 表示这个编辑区(buffer)可以修改.
有一些emacs的buffer是read-only buffer, 就会标成%
%%表示档案是read-only.

C-x C-q 可以解开read-only的锁定, 无论如何你要改这个编辑区.
这是个toggle指令, 如果原来是可以修改的, C-x C-q会把它切成
read-only.


Search

没有Search 功能的编辑器简直就是小朋友的玩具. Search
是一项很重要的功能, 所以emacs也提供的很完善.
C-s
C-r
M-x re-search-forward
M-x re-search-backward
M-x search-forward
M-x search-backward
以上这些指令是基本的search指令. C-s, C-r是increamental search,
就是你打字的同时, emacs就直接帮你找. 一个是forward, 一个是backward.
找到了怎麽办? 按C-g可以取消搜寻, 跳回原来的位置. 按Enter就让游标
停在找到的地方 -- 此时minibuffer显示:Mark saved where search started
什麽意思? 就是isearch帮你在原来的位置设了一个mark, 然後把point
(cursor) 移到新的位置.
想跳回去原先的地方?
C-x C-x 就可以了.(exchange-point-and-mark)
C-u C-SPC 可以依序跳回前几次设mark的地方.
(C-SPC是设mark, 给它一个argument, 就是反动作)
(还记不记得C-u 可以给後面的指令设一些参数.
有些指令拿这个参数来当作repeat count,
有些指令就只拿来当作on/off, true/false, set/clear而已)

M-x re-search-forward可以让你用regular expression搜寻.
M-x search-forward则没有increamental的功能.

另外一个指令, 作用和grep很像:
M-x occure

和search相提并论的就是replace.
M-x replace 然後按 SPC, 就知道了.

Emacs的设定:

Emacs的设定档是 $HOME/.emacs
你应该多少知道, emacs是用lisp写成的编辑器, .emacs档也都是
要用lisp的语法设定. emacs用的lisp称为elisp, 和一般的lisp差一点点.

有一个info page, emacs-lisp-intro, 深入浅出的介绍emacs lisp.
如果你还不会, 不懂programming, 强烈建议你看这份文件. 如果你
会texinfo, 你可以把它很漂亮的印出来. (内容一点点而已, 两三
天就看完了)

如果你把.emacs搞砸了, 进emacs很奇怪, 怎麽办?
1. 用 vi 改 .emacs :
2. emacs -q 进 emacs


Major Modes

一般常见的emacs major mode有
fundamental-mode
text-mode
lisp-mode  有自动对括号/重排, 直接执行lisp code功能.
c-mode/cc-mode c-mode是比较旧的c-mode, cc-mode应该是
       目前新的c-mode. 有自动重排/对括号的功能.
       也可以在emacs内compile, 跳到compiler error
       修正错误. 执行程式时debug. (配合dbx/gdb)
       compile是透过Makefile进行.
tex-mode  Tex/Latex编辑模示. 可能是打一些奇怪的标点
       符号比较方便.
programming-language-mode
       同lisp/cc-mode. 如果是interpreter的话,
       emacs通常都可以直接执行/debug.
programming-language-mode还有tags的功能, 後述.

html-mode, texinfo-mode, sgml-mode: 编写html, texi, sgml之用.
w3-mode   WWW browser. 在x-win上不满意,但可以接受...


作者: suncon    时间: 2003-11-30 00:13
标题: linux系统管理
Tags

Tags 是一个显为人知的功能? 所以我想提一下. 这不是emacs发明的,
而是vi 原本的特异功能. emacs只是发扬光大而已.
假设你有一个目录, 里面是一个程式的原始码, 比如说, tin 的原始码,
放在 ~/tin-1.3beta 下面. 你想看它们.

首先, 叫emacs cd到该目录:
M-x cd

然後, 建立tag table.
tag table 就是一张对照表, 记录哪个符号(variable/function call)
对映到哪个档案的哪个地方. 有这张表, emacs可以让我们快速的在程
式码内游走. 一般这张表是一个档案, 叫作TAGS (大写)

M-! etags *.[ch]

M-! 是执行external shell command的意思. etags就是emacs的建表程式.
你只要告诉它你的source code在那□即可.

vi的话是使用ctags这个程式, 它建出来的档名叫tags (小写). 因为
我们介绍emacs, 所以不管它.

然後, 怎麽看程式? 你知道所有的C 程式都是由main()开始, 所以你想
找到main()在哪个档案. 这时只要按 M-. 然後emacs会问你tag table
在哪里. 因为我们已经cd到该目录, 直接按enter就好了. 然後输入main,
emacs就会把你带到main(){ ... }去.

如果 你看到某个程式片断呼叫一个你没看过的函式, 你可以把游标
移到该函式的名字上, M-. ENTER 就搞定了.

如果 emacs找错了 (比如有变数和函式同名, emacs跳到变数去),
那你可以用 C-u M-. 找下一个.

在编辑程式码的时候, M-SPC 很有用, 它会把游标附近的空白缩成一个.
在其它地方也有效.

Emacs的一些package:

M-x dired (或C-x d)
    游走/编辑 目录, 就是档案总管的意思

M-x man  就是man page
M-x shell 开个command prompt, 不过不能跑vi,elm, tin...
M-x gnus 读新闻/读信
M-x rmail 读信
M-x vm  view mail
M-x mh-rmail 读信 (package mh-e)
M-x mh-smail 送信 (package mh-e)

强列建议改用emacs读news/bbs. 世界会更美好!

读信的话就要看你的感觉. 这些读信程式都会把信从系统的mail folder
搬到自己的目录下, 占用quota, 我不喜欢 建议elm或mutt.
除非参加mailling list配合procmail. 不然不实用.
用mh-e 须要装mh 这个外部程式, 不太好. 建议vm 或 gnus.
写完信, C-c C-c 就可以送信.

如果你的资料用rcs/sccs作版本管理, emacs自动会起动version control
(minor mode.), c-x c-q 变成check-in/check-out.

如何取得更多的资讯:

Emacs的lisp 经过多年的发展,已成为完整的self-documenting系统.
很多东西都可以线上找到你要的资讯.

前面说过,或者你已经不小心按backspace遇到了, C-h (就是backspace
的ascii码) 在emacs里面是help的意思, 它可以带出一串指令.
常用的有:

C-h F  Emacs FAQ
C-h t  Emacs 使用教学
C-h n  Emacs NEWS file, 介绍最近改版的新功能
C-h i  Info system. Info是gnu用来取代man page的系统,
     基本上和文字模示的WWW差不多. 有许多重要的资讯
     可以在这边找到. 如果你是新手, 建议你在x-win下
     看. 不然, 按键 m (menuitem), SPC next page
     l (last node: node就是章节的意思) u (up node)
     d (directory, 索引). BS (Backspace, back a page).
     如果全部只按SPC, 就跟man 一样.
C-h k  describe key, 告诉你按这个键执行那个lisp function.
C-h f  describe function. 告诉你function在作什麽.
     如果只按SPC, emacs会给你所有lisp 函数的列表, 和说明.
C-h v  describe variable 同function.
C-h a  apropos的意思(approximate). 给lisp function的部份
     字串, emacs帮你找.
C-h b  列出目前所有的keybinding
C-h m  mode help. 列出目前的mode的特殊说明.
C-c C-h 列出以C-c 开头的所有key-binding. 虽然说Emacs
     可以定义按键, 可是Ctrl- 开头的所有组合大概都用光了,
    只有C-c算是可以自定指令. 不过有些mode也侵犯这个空间.
     目前的convention是C-c chr 留给user, C-c C-chr
     留给package.

有以上这些help, 你的emacs/elisp功力会随著时间成长.


作者: suncon    时间: 2003-11-30 00:13
标题: linux系统管理
Elisp 简介:

Emacs有三份手册.第一份是使用手册, 第二份是Elisp 手册, 第三份是
Elisp 简介. 第三份的程度是入门级, 值得看. Elisp手册其实也写的
很简单, 还教你lisp, 不过有点长, 适合参考.

因为我lisp没有仔细学过, 所以:
以下所言, 如有巧合, 那才是真的.

Basic data type
字串 (string) Hello, World
字元 (char) ?a        &#59; 问号开头
atom  list:
  (1 2 3 4) 是一个list, 由 4个 atom 组成.
pair: 中间是句点.
  (apple . 2)
alist (associated list)
  就是一堆 pair的集合,就像perl/tcl的associative array.
  或者说是一个资料库, 一堆 (key, value) pair.
  '((Apple   . 1)
   (Orange  . 2)
   (PineApple . 3))
vector (?)
  emacs 19用vector 来表示按键(key strok sequence)
  [f1] [f2] [f1 a]

nil 就是空的list, 或者表示 false
t  true
forms
我们写程式最好有样版让我们填空最简单了.
form 就是样版, 不过意义不太一样.
form 就是Elisp 可以接受的句型.
lisp 解译器 预设是对list的每个元素求值(evaluate),
除非是 special form, 有特殊的定义. 比如说

(defun FUNC (ARG-LIST)
  BODY ...)
就是一个special form, 用来定义函式, 所以FUNC 不会被
求值, 被当成symbol, ...

(quote (LIST))

这也是个special form, 叫 lisp 把 (LIST)当做symbol就好了,
不要 evaluate.

quote 很常用, 所以有个缩写:
'(LIST) 等於 (quote (LIST))
'Asymbol 可以表示一个Atom, 名称叫Asymbol

set 可以产生/定义新的变数.
(set 'hello 1)
&#59; hello = 1
&#59; 注意我们用 'hello, 所以lisp不会evaluate hello的值.

这家伙很常用, 也有简写.
(setq hello 1)
setq 就是set quote 的缩写. 这是个 special form, 不会对
第二个元素求值.
valuation

在Emacs下, C-x C-e 可以执行(evaluate, 求值)游标左边的叙述.
结果会出现在minibuffer.

lisp-interaction-mode中 C-j 可以evaluate, 并且把结果append到 buffer.

lisp 程式由一堆list 构成.称为expression.
每个expression 都回传回一个值.
有些expression有副作用, 如删掉一个字.
(这跟C 的int delete_char() 意思一样, 它传回int,
并且删掉某个char)

定义函式:

(defun NAME (ARGS-LIST)
  注解         &#59; optional
  (interactive)      &#59; optional
  BODY)

定义一个叫NAME的函式. BODY 是一堆expression.
注解是用来给C-h f显示的.
(interactive) 表示这个函示会和user/buffer作用.
(interactive B) 表示执行此函式先问user一个buffer的名字,
      然後当作参数传给它. (如, 当user透过key-binding
      或者 M-x 呼叫此函式时)
(interactive BAppend to buffer: \nr)
      问user buffer name时, 提示号 Append to buffer:
      此function有两个引数,第一个是B, 就是buffer
      第二个是r, region
      用\n 隔开.
(interactive p) 用C-u 设的prefix 把它当作参数传给我.
        预设值==4. C-u C-f 向右移四个字


作者: suncon    时间: 2003-11-30 00:14
标题: linux系统管理
一些lisp 函式:

(list 1 2 3 4)  产生 '(1 2 3 4)
(car '(1 2 3 4)    1
(cdr '(1 2 3 4)    '(2 3 4)
(cons 1 '(2 3 4))   '(1 2 3 4)
(cons 1 2)      (1 . 2)
(cons 0 (cons 1 (cons 2 nil)))
       等於 '(0 1 2)
  {list 是用 pair 串起来的,
   用C 表示:
     pair: {Object *first, Object *second}&#59;
     *(pair.first) == i&#59;
     pair.second == pair[i+1]&#59; }

(cons '(1 2) '(3 4)) '((1 2) 3 4)
(setq a 1)
(1+ a)    &#59; a+1
(+ 2 a)    &#59; a+2
(* 1 2 3 4)
(current-buffer) &#59; 传回目前buffer的资料物件
(switch-to-buffer (other-buffer))
(set-buffer)
(buffer-size)
(setq current-pos (point))
(point-min)
(point-max)
(message Hello)  &#59; 在minibuffer显示Hello
(if (test)
  (then-part)
  (else-part))
(cond ((test1) BODY1)
  ((test2) BODY2)
  (t OTHER-WISE)
(let ((var1 value) &#59; local variable
   var2       &#59; no value
   (var3 value)
   ...)
   BODY ...)
(lambda (ARG-LIST) ...) 同 defun, 但是没有名字 (anonymous).
可以存到变数去:
(setq hello (lambda () (message Hello,World)))
(funcall hello)
(goto-char (point-max))
(defvar VAR value *注解) 如果VAR 不存在才定义. 有注解可以用
C-h v 看. 注解打*号表是使用者可以直接改/ 这个变数本来就是
      给使用者设定用的.
      可以用 M-x edit-options 来线上设定 (emacs结束就没有了,
      不过edit-options可以给你所有可修改的变数的列表,你可以
      放到.emacs档内.

(directory-files ./ t \\..*)
    return a list of files under directory X
(load xxxx.el) 同#include stdio.h
      给使用者设定用的.
      可以用 M-x edit-options 来线上设定 (emacs结束就没有了,
      不过edit-options可以给你所有可修改的变数的列表,你可以
      放到.emacs档内.

(directory-files ./ t \\..*)
    return a list of files under directory X
(load xxxx.el) 同#include stdio.h
(setq load-path (cons ~/emacs load-path)) &#59; load的search path.
(autoload ...) 不像load会直接evaluate 整个档案, 而是需要时再
       load.
(local-unset-key [(control c)])
(local-set-key [(control c) a] 'forward-sexp)
sexp 就是一个expession, n个expression如果用括号括起来就算一个.
  (expression的定义随语言的不同而有不同, 在C, lisp
   tex, html, fortran 下皆有差异)



作者: suncon    时间: 2003-11-30 00:15
标题: linux系统管理
归档和压缩

tar和gzip

最简提示:
tar zxvf XXXX.tar.gz
tar jxvf XXXX tar.bz2

1.压缩一组文件为tar.gz后缀。
# tar cvf backup.tar /etc #gzip -q backup.tar

# tar cvfz backup.tar.gz /etc/
2.释放一个后缀为tar.gz的文件。
#gunzip backup.tar.gz #tar xvf backup.tar

# tar xvfz backup.tar.gz

3.用一个命令完成压缩
#tar cvf - /etc/ | gzip -qc  backup.tar.gz

4.用一个命令完成释放
# gunzip -c backup.tar.gz | tar xvf -

5.如何解开tar.Z的文件?
# tar xvfz backup.tar.Z 或 # uncompress backup.tar.Z #tar xvf backup.tar

6.如何解开.tgz文件?
#gunzip backup.tgz

7.如何压缩和解压缩.bz2的包?
#bzip2 /etc/smb.conf
这将压缩文件smb.conf成smb.conf.bz2
#bunzip2 /etc/smb.conf.bz2
这将在当前目录下还原smb.conf.bz2为smb.conf
(bzip2 -d也一样)
注: .bz2压缩格式不是很常用,你可以man bzip2



作者: suncon    时间: 2003-11-30 00:16
标题: linux系统管理
rpm

1.安装一个包
# rpm -ivh
2.升级一个包
# rpm -Uvh

3.移走一个包
# rpm -e

4.安装参数
--force 即使覆盖属于其它包的文件也强迫安装
--nodeps 如果该RPM包的安装依赖其它包,即使其它包没装,也强迫安装。

5.查询一个包是否被安装
# rpm -q  rpm package name

6.得到被安装的包的信息
# rpm -qi  rpm package name

7.列出该包中有哪些文件
# rpm -ql  rpm package name

8.列出服务器上的一个文件属于哪一个RPM包
#rpm -qf

9.可综合好几个参数一起用
# rpm -qil  rpm package name

10.列出所有被安装的rpm package
# rpm -qa

11.列出一个未被安装进系统的RPM包文件中包含有哪些文件?
# rpm -qilp  rpm package name



作者: suncon    时间: 2003-11-30 00:16
标题: linux系统管理
其他

文件的压缩和解压缩是计算历史上最有用的创造之一,但缺乏可移植性和开放工具是阻碍它发挥其应有作用的最主要的一个障碍。只要我们是与其他使用类似 Unix 操作系统的用户交换文件,就可以使用例如 compress、gzip 和 bzip2 这样的可移植工具。但世界上其他人使用的是各种各样的专用软件 -- 甚至专用压缩算法 -- 拥有者可能永远也不会将它们公之于众。
这种事态发展下去会很危险。想象一下,将来我们可能无法对档案的重要部分译码,原因是我们创建它们时使用的是专用工具和算法,而那些工具运行所在的操作系统和硬件已逐渐过时,消失不见。这就是为什么我们应该使用开放源码压缩工具,或者至少使用免费和有完善记载算法的商业压缩工具的原因。(只是要记住避免使用任何特殊的增强。)

本文是有关在 Linux 操作系统上使用 .arc、.arj、.lzh (.lha)、.rar、.sit、.zip 和 .zoo 文件的指南。我选择讨论这些特殊的格式是因为三种最流行的操作系统 (MS-DOS、微软 Windows 和 Mac OS)的用户最常使用它们。我之所以写这篇指南是希望引导大家快速找出正确的工具,而不是详细地从技术上讨论文件压缩技术。

最后,我想简短说明一下自解压文件。这样的档案往往位于包含压缩格式数据的现实程序中。执行它们时,它们会解包,并将存储在程序主体内的数据复制到您指定的任何驱动器上。唯一的问题是它们无法在 Linux 上使用,没有工具可以抽取它们。在这种情况下,需要让创建档案的那个人将它作为一个一般档案压缩。

参考资料

VMware:
http://www.vmware.com
DOSEMU:
http://www.dosemu.org
Aladdin Expander:
http://www.aladdinsys.com/expander/expander_linux_login.html
ARJ 软件:
http://www.arjsoft.com
ARJ 的 FAQ 页面:
http://www.arjsoft.com/faq.htm
ARJ 的下载页面:
http://www.arjsoft.com/files.htm
gzip:
http://www.gnu.org/software/gzip/gzip.html
Linux 发行版页面:
http://www.linux.org/dist/index.html
RAR 站点:
http://www.rarsoft.com
macutil 软件包:
http://www.linux.org/dist/index.html
tar:
http://www.gnu.org/software/tar/tar.html
WinZIP:
http://www.winzip.com
StuffIt:
http://www.aladdinsys.com
下载源码形式的 Info-ZIP:
http://www.freesoftware.com/pub/infozip
下载二进制形式的 Info-ZIP:
http://www.linux.org/dist/index.html
下载 PKZIP:
http://www.pkzip.org/shareware/pkzip_unix.html

作者: suncon    时间: 2003-11-30 00:17
标题: linux系统管理
arc

.arc
带有 .arc 扩展名的文件相对来说比较少见。如果您偶然碰到一个,基本上可以认定它是使用旧的 MS-DOS SAE ARC 或 PKware PKARC 归档实用程序创建的。这种形式在 Linux 上的支持性不是太好,并很难指望在 Linux 机器上对这些文件解压缩。如果需要创建 .arc 文件,尝试在 DOSEMU 或 VMware 下运行原始 SAE ARC 或 PKware PKARC(在携带 MS-DOS 实用程序的 FTP 服务器上查找它们)。
要解压缩 .arc 文件,使用 Aladdin Expander for Linux。写这篇文章的时候,Aladdin Expander 可以为公众 Beta 测试目的免费获得;它是否继续免费还是个未知问题。

要解压缩 .arc 文件,输入 unstuff file.arc。-d 是个有用的选项,指定解压缩文件的目标位置。例如:unstuff -d=./home/james/incoming file.arc。

注:要了解更多有关 Aladdin Expander for Linux 的详细信息,请阅读有关 .sit 文件的那一节。

VMware:http://www.vmware.com
DOSEMU:http://www.dosemu.org
Aladdin 系统: http://www.aladdinsys.com/expander/expander_linux_login.html



作者: suncon    时间: 2003-11-30 00:17
标题: linux系统管理
arj

.arj
带有 .arj 扩展名的文件是使用 ARJ Software 用于 MS-DOS 和 Windows 的 ARJ 实用程序创建的。  因为 ARJ 是一种不能免费获得源代码的共享件程序,所以在 Linux 平台上几乎不存在与其功能匹配的工具,这使得 .arj 文件使用起来相当困难。

对于 ARJ 文件,只要能成功地解压缩就已经够幸运的了。不可能在 Linux 上进行 .arj 形式的压缩,因为没有用于 Linux 的、生成这种文件的本机压缩工具。(可以尝试在 DOSEMU 或 VMware 下运行原始 ARJ 软件,但这根本算不上是一种易于使用的解决方案)。

要解压缩 .arj 文件,使用 unarj 实用程序。它比 ARJ 慢,能力也不如 ARJ,但至少它能够顺利地抽取大多数 .arj 文件。它只能将文件抽取到当前的工作目录、列出档案内容,或者测试档案。

要查看简短的帮助页面,输入 unarj;如需较详细的描述,请参阅 unarj.doc 文件,通常它位于 /usr/doc/unarj-2.43 目录中。

尽管在哪里解压缩 .arj 文件是由您来选择的,但为避免把主工作目录混淆,通常应该在主目录中创建一个临时子目录,将当前工作目录更改到新目录,将压缩的文件移到新目录中,然后使用 unarj e archive.arj 来解压缩有问题的文件。

用于 Linux 的 unarj 只能一次抽取所有文件;不能从档案中抽取个别文件。至少如果文件已存在于当前的工作目录中,即使在档案中找到具有相同名称的文件,您也不会覆盖其内容。另外, unarj 不支持空目录或自抽取档案;后者是 MS-DOS/Windows 程序,它们无法在 Linux 上运行,但可以在 DOSEMU 或 VMware 下运行。

以下是其它一些 unarj 选项:

unarj archive.arj 或 unarj l archive.arj -- 列出档案内容
unarj t archive.arj -- 测试档案
unarj x archive.arj -- 带路径名抽取文件

请注意,unarj 选项不是以减号 (-) 开头的。

如果 unarj 解压缩文件失败,尝试使用 Aladdin Expander for Linux(有关详细信息,请参阅有关 .sit 的那一节)。您还可以让创建档案的人使用其它工具(例如可用于 MS-DOS 的免费 gzip)来压缩它。您可能还需要一个 simple.arj 档案,在其中要避免使用所有高级 ARJ 选项,例如卷、将档案分成几个小部分、以及自抽取。

为什么不使用自抽取 ARJ 档案呢?这些是不能在 Linux 下运行的 MS-DOS 样式的可执行文件;它们使用不同的系统库,它们的内部格式也与 Linux 所需的二进制可执行文件的格式不同。可能可以在 DOSEMU 或 VMware 下运行自抽取 ARJ 档案。

以 ARJ 或 JAR 形式进行的压缩仍然不能在 Linux 上使用,按照 ARJ Software 的 FAQ 页面的说法,我们不应该等待 Linux 移植。如果您知道有任何 Linux 工具可以解压缩 .jar 文件,请务必告诉我。

可以从 ARJ Software 的站点或携带您所需 Linux 发行版的 FTP 服务器上下载 unarj 源码。另外,unarj 通常是基本 Linux 发行版的一部分,因此可以在主要分发 CD-ROM 上找到它。如需到所有 Linux 发行版的链接的列表,请参阅 Linux 发行版页面。

ARJ 软件:http://www.arjsoft.com
ARJ 的 FAQ 页面:http://www.arjsoft.com/faq.htm
ARJ 的下载页面:http://www.arjsoft.com/files.htm
DOSEMU:http://www.dosemu.org
VMware:http://www.vmware.com
Aladdin Expander: http://www.aladdinsys.com/expander/expander_linux_login.html
gzip:http://www.gnu.org/software/gzip/gzip.html
Linux 发行版页面:http://www.linux.org/dist/index.html


作者: suncon    时间: 2003-11-30 00:18
标题: linux系统管理
.lzh (.lha)

.lzh (.lha)
带有 .lzh 或 .lha 扩展名的文件使用的是 LHa、LHarc 或 LHx 压缩实用程序进行的压缩。这些实用程序是由 Y. Tagawa、H. Yoshizaki、Momozou 和 Masaru Oki 开发的。这些实用程序已移植到许多操作系统,使用它们所创建的文件也具有相当的可移植性。Mats andersson 执行了 Linux 移植。
与 gzip 不同,lha 实用程序执行多个文件的压缩。要压缩单个文件,输入 lha a archive file。lha 创建的档案带有 .lzh 扩展名。如果 archive.lzh 已在当前的工作目录中存在,那么您让 lha 压缩的文件就将添加到这一现有的档案中。archive.lzh 先前的内容仍被保留,除非它已包含带有相同名称的文件,在这种情况下,旧文件将被新文件取代。该操作是 盲目的,意味着它不检查文件的时间戳记;要确保只有带有更新时间戳记的文件才能替换档案中已保存的较旧的文件,这时使用 u 选项而不是 a 选项(例如,lha u archive file)。

当收到 .lzh 文件的人抱怨无法解压缩档案时,尝试使用 lha ag archive file 或 lha ao archive file。g 和 o 选项分别指示 lha 使用常规或与 lha 兼容的归档方法。如果您只更新现有的档案,使用 u 而不是 a。

归档多个文件和归档单个文件一样容易:使用通配符(例如, lha a archive files*)或输入存储文件所在的顶级目录(例如,lha a archive directory)。所有文件和子目录都将自动存储在档案中。文件替换规则和 u 选项对多个文件和单个文件所起的作用是一样的。通配符使用的语法和您在常用的 shell 中所使用的语法相同。

以下是其它一些 lha 选项:

l -- 列出档案内容(例如,lha l archive.lzh)
v -- 列出详细格式的档案内容(例如,lha v archive.lzh)
t -- 测试档案的完整性(例如,lha t archive.lzh)

请注意,lha 选项不必以负号 (-) 开头,它们之间也不应该有空格。如需其它选项的列表,请输入 lha。

.lzh 和 .lha 文件的解压缩相当容易:只需输入 lha e archive.lha。如果希望将文件解压缩到不是当前工作目录的目录中,输入 lha ew=path archive.lha。

也可以使用 lha w=path -e archive.lzh 将档案的内容抽取到由 path 指定的目录中。lha -ie archive.lzh 将抽取档案内容,但忽略存储在其中的目录路径。

lha 的源码和二进制版本可以从携带您所需 Linux 发行版的服务器上免费获得。如需到所有 Linux 发行版的链接的列表,请参阅 Linux 发行版页面。

Linux 发行版页面:http://www.linux.org/dist/index.html
gzip:http://www.gnu.org/software/gzip/gzip.html


作者: suncon    时间: 2003-11-30 00:18
标题: linux系统管理
rar

.rar
带有 .rar 文件扩展名的文件是使用 RAR 和 WinRAR 归档和压缩工具创建的,这些工具由 Eugene Roshal 开发。他先是发行了用于 MS-DOS 操作系统的这些工具。RAR 受到用户的青睐是因为他们看重它的广泛特性和高压缩比率,以及友好的用户界面,它与 Norton Commander 的界面(或 Midnight Commander 的界面)很相似。
因为 RAR For Linux 是该软件的完整移植,因此您可以享受到原始 RAR 的所有好处(除 MC 样式的界面以外)。但要记住,RAR for Linux 不是免费的;必须向总部在芬兰的一家公司 T:mi Softronic 注册它。

RAR for Linux 选项的列表给人的印象深刻,可以用作其它归档和压缩工具开发人员的任务列表。要压缩单个文件,输入 rar a archive file。.rar 扩展名将自动附加到档案后(它的完整文件名将是 archive.rar)。如果 archive.rar 已在当前工作目录中存在,您尝试添加到 archive.rar 的文件就将直接添加到现有档案中。只有在 archive.rar 已包含带有相同名称的文件时,旧文件才会被新文件替代。其它存储在档案内部的文件将保持不变。请记住,该操作是 盲目的,意味着 RAR 不检查文件的时间戳记;只有在 a 选项后添加了 -u 选项时才执行这一检查。请注意,a 前面没有减号 (-)(例如,rar a -u archive file)。

多个文件的归档非常简单:要将当前工作目录中的所有文件和目录归档,输入 rar a archive。要将特定目录的内容归档,输入 rar a archive /path/to/directory。要将一组文件归档,将它们括在引号中,象这样: rar a archive '*.cpp'。

文件替换规则和 -u 选项对多个文件和单个文件所起的作用是一样的。通配符使用的语法和您在常用的 shell 中所使用的语法相同,但必须记住要用引号括起它们。

以下是其它一些 RAR 选项:

l -- 列出档案内容(例如,rar l archive.rar)
v -- 列出详细格式的档案内容(例如,rar v archive.rar)
t -- 测试档案的完整性(例如,rar t archive.rar)

请注意,不是所有 RAR 选项都以减号 (-) 开头;有关详细信息,请运行不带任何选项和自变量的 RAR(例如,如果 RAR 目录位于当前工作目录中,运行 rar/rar)。有关详细信息,请参阅 RAR 手册文件(它是 rar.txt 文件,同样位于 RAR 目录中)。

使用 RAR,您可以解压缩整个档案(使用 rar e archive.rar)、单个文件(使用 rar e archive.rar file)或一组文件(使用 rar e archive.rar '*.cpp')。因为 RAR 可以对多个文件使用,您也可以使用 rar e '*.rar' '*.cpp' 从多个档案中抽取几组文件。

当 RAR 无法从一个档案中抽取文件时,使用修复选项进行挽救:rar r archive.rar。

可以从官方 RAR 站点获得自抽取档案形式的 RAR for Linux。需要使用 ./rarlnx271.sfx 命令来运行它(结尾的数字可能会因为发行了新版本的 RAR 而有所不同)。档案将其内容解包到当前工作目录中自动创建的 rar 子目录中。您可以在其中找到 rar 二进制。可以将 rar 二进制移到 /sbin 或 /usr/sbin 目录中,这样所有用户都可以使用它。除了 RAR 本身,您还可以获得 UnRAR,它是一个小型实用程序,用于解压缩 .rar 文件,如果您希望允许其它用户打开这样的档案但不创建它们,这个实用程序使用起来非常方便。

RAR 站点:http://www.rarsoft.com



作者: suncon    时间: 2003-11-30 00:19
标题: linux系统管理
sit

.sit
使用 Aladdin systems 所开发的、用于 Mac OS 的 StuffIt 归档程序创建的档案通常带有 .sit 扩展名。这些文件还可以有其它的如 .hqx 或 .bin 这样的扩展名,表明它们曾使用 BinHex 或 MacBinary 实用程序处理过,来创建可以在计算机网络上以电子方式传送的单个文本文件或二进制文件。(Macintosh 文件通常有两部分,称为创建子进程,必须在传送之前将它们联接在一起,以确保它们作为一个整体传送。)可以使用组成 macutil 软件包的一些实用程序来处理这样编码的文件,它是免费的,可用于所有正式的 Linux 发行版)。
因为 Aladdin systems 控制着 StuffIt 的源代码,在收到 .sit 文件时唯一的选择是使用 Aladdin Expander for Linux,它当前还处于 Beta 阶段(但已相当合用)。Aladdin systems 已将这一 beta 版作为免费软件向公众提供:您不必为它付钱,但也无法获得源代码。当前没有用于 Linux 的、创建 .sit 档案的工具。

要解压缩 .sit 档案,输入 unstuff archive.sit。如果不使用 -d 选项,抽取出的文件将放在当前工作目录下,该选项可以让您指定目标目录: unstuff -d=/home/james/oldmacfiles archive.sit。如果解包的文件是受密码保护的,使用 -p 选项:unstuff -p=secret archive.sit。文本文件转换 filer 选项用于处理行结束字符的转换,将 LF 转换成 CRLF,然后再转换回来:unstuff-text=auto -eol=unix archive.sit。

可以在 Expander 的 man page 上找到有关它的详细信息(输入 man unstuff 显示它)。

Aladdin Expander for Linux 可以从 Aladdin systems 网站上获得。使用或下载它不用付任何费用,但必须向 Aladdin systems 注册。有两个版本的 Expander,一个用于基于 RPM 的系统(Red Hat、Mandrake、SuSE 等),另一个用于基于 .deb 的系统(Debian、Corel 等)。没有特定于 Slackware 的软件包,但要转换 RPM 包以在 Slackware 上使用它应该并不困难。

Aladdin systems:http://www.aladdinsys.com
Linux 发行版页面:http://www.linux.org/dist/index.html
macutil 软件包:http://www.linux.org/dist/index.html
Aladdin Expander for Linux: http://www.aladdinsys.com/expander/expander_linux_login.html



作者: suncon    时间: 2003-11-30 00:19
标题: linux系统管理
zip

.zip
.zip 扩展名表示文件是使用许多 zip 归档程序和压缩程序之一(但不是 gzip)创建的。因为这是一种非常流行的压缩格式,算法的详细描述也有很多,所以可以找到用于所有操作系统的有用的移植形式。这包括创建和扩展带有 .zip 文件扩展名的档案的压缩和解压缩实用程序。在 Linux 上有两种这样的工具:免费的 Info-ZIP 和以赢利为目的的 PKZIP for Linux。如果您只是偶尔需要创建或打开 zip 文件,使用 Info-ZIP。如果希望使用在 MS-DOS 或其它系统上使用的相同工具,请选择 PKZIP(PKZIP 可用于许多操作系统)。用于微软 Windows 的 WinZIP 和用于 Mac OS 的 Stufflt 这两种实用程序可以创建和打开相互之间兼容的档案。
Info-ZIP 在无法使用 gzip 或 tar 的情况下可以提供压缩和解压缩的一个不错的选择,这或许是在 Linux、微软 Windows 和 Mac OS 用户之间交换压缩文件的一种最好的形式。有许多不错的 zip 程序(有开放源码的,也有商业的)可用于这些操作系统,它们应该能确保文件的顺利交换(当然,只要是在特定于某个特定工具的特殊功能关闭的情况下)。

要归档单个文件,输入 zip archive file。要压缩多个文件,使用通配符(例如,zip archive picture*jpg)。还有可能将文件定向输出到 zip;输入 man zip 获得详细信息。要归档整个目录,包括其中所有子目录的内容,使用 -r 选项,然后在档案名后输入目录名(例如,zip -r archive directory)。还可以输入 zip -R archive . 来将当前当前工作目录进行归档。.zip 扩展名自动添加到档案名后。

当 zip 发现已有档案的名称和您尝试创建的名称相同时,它将您希望压缩的文件添加到现有档案中,而不将已存在的文件除去。这一规则有一个例外:如果存储在现有档案中的一个或多个文件和您希望压缩的一个或多个文件具有相同的名称,旧文件将由新文件替换。文件替换规则可以使用 -u 选项来修改(有关详细信息,请参阅 man zip)。

以下是其它一些 zip 选项:

-j -- 只存储文件名,不带访问路径(例如,zip -j archive file)
-t -- 测试档案的完整性(例如,zip -t archive.zip)
-x -- 排除文件(例如,zip -r archive ./* -x *.tmp)

请注意,不是所有 zip 选项都以负号 (-) 开头。

PKZIP 选项类似于 Info-ZIP,但您应该阅读 pkzip.htm 手册(它是一个 HTML 文档;使用 lynx pkzip.htm 或 netscape pkzip.htm 阅读)来确保您的操作正确。

要解压缩 zip 文件,使用 unzip archive.zip 命令。如果想指定将档案扩展到哪个目录中,可以使用 -d 选项(例如,unzip file.zip -d /home/james/zips 将 file.zip 的内容抽取到 /home/james/zips 目录中)。

注:Aladdin Expander for Linux 也可以解压缩 zip 文件。有关详细信息,请参阅有关 .sit 文件的那一节。

当 zip 无法抽取档案中的文件时,使用 -F 或 -FF 修复 zip 选项进行挽救(例如 zip -F archive.zip 或 zip -FF archive.zip)。请记住在尝试拯救已破坏的档案之前进行备份。

可以从官方 Info-ZIP 站点获得二进制或源码形式的 Info-ZIP for Linux。

可以从 PKZIP 官方站点下载 PKZIP for Linux。它作为自抽取档案分发。要为它解包,输入 ./pklin251.exe,档案的内容将解包到当前工作目录中。您需要将 pkzip25 二进制文件复制到 /sbin 或 /usr/sbin 目录中,这样系统上的所有用户都可以使用它。(但您必须购买相应的许可证,因为它是商业软件包。)

gzip:http://www.gnu.org/software/gzip/gzip.html
tar:http://www.gnu.org/software/tar/tar.html
WinZIP:http://www.winzip.com
StuffIt:http://www.aladdinsys.com
Aladdin Expander: http://www.aladdinsys.com/expander/expander_linux_login.html
下载源码形式的 Info-ZIP:http://www.freesoftware.com/pub/infozip
下载二进制形式的 Info-ZIP:http://www.linux.org/dist/index.html
下载 PKZIP:http://www.pkzip.org/shareware/pkzip_unix.html



作者: suncon    时间: 2003-11-30 00:20
标题: linux系统管理
zoo

.zoo
.zoo 扩展名在因特网上不经常出现,但请放心,可以使用 Linux 的 zoo 实用程序打开和创建这样的文件。不过要记住,zoo 对于现在用户的期望来说已有些陈旧和简单。
要归档单个文件,输入 zoo a archive file。同样,要压缩多个文件,可以使用通配符 -- 例如,zoo a archive picture*jpg。.zip 扩展名自动添加到档案名后。

下面是其它一些 zoo 选项以及它们所添加的功能:

l -- 列出档案内容(例如,zoo l archive.zoo)
t -- 测试档案的完整性(例如,zoo -t archive.zoo)

请注意,不是所有 zoo 选项都以负号 (-) 开头。

要解压缩 .zoo 文件,输入 zoo e archive.zoo。

可以获得用于所有 Linux 发行版的二进制形式的 zoo for Linux。

下载二进制形式的 zoo:http://www.linux.org/dist/index.html


作者: suncon    时间: 2003-11-30 00:20
标题: linux系统管理
邮件

1. 将文件当做电子邮件的内容送出
语法:mail -s “主题”用户名@地址 文件
例如:
mail -s “program” user  file.c 将file.c 当做mail的内容,送至user,主题为program。
2. 传送电子邮件给本系统用户
语法:mail 用户名

3. 传送电子邮件至外地用户
语法: mail 用户名@接受地址
例如:
mail weisongzhou@hotmail.com
Subject : mail test
:
键入信文内容
: :
按下Ctrl+D 键或. 键结束正文。
连按两次Ctrl+C键则中断工作,不送此信件。
Cc( Carbon copy) : 复制一份正文,给其他的收信人。

4. 检查所传送的电子邮件是否送出,或滞留在邮件服务器中
语法:/usr/lib/sendmail -bp
若屏幕显示为“Mail queue is empty” 的信息,表示mail 已送出。
若为其他错误信息,表示电子邮件因故尚未送出。



作者: suncon    时间: 2003-11-30 00:22
标题: linux系统管理
快捷键

这里列举了一些你可以用来快速执行常见任务的快捷键。
要了解更多快捷键,请访问:
http://sunsite.dk/linux-newbie/lnag_commands.html#shortcuts

[Ctrl] + [Alt] + [Backspace] = 杀死 X。这会杀死你当前的 X 会话,把你返回到登录屏幕。如果正常退出步骤不起作用,你可以使用这种方法。

[Ctrl] + [Alt] + [Delete] = 关机和重新引导。关闭你当前的对话然后重新引导 OS。只有在正常关机步骤不起作用时才使用这种方法。

[Ctrl] + [Alt] + [Fn] = 切换屏幕。[Ctrl]+[Alt] + 功能键之一 会显示一个新屏幕。[F1] 到 [F6] 是文本(控制台)屏幕, [F7] 是图形化屏幕。

[Alt] + [Tab] = 切换任务。如果你同时打开了不止一个应用程序,你可以使用 [Alt] + [Tab] 来在打开的任务和应用程序间切换。

[Ctrl] + [a] = 把光标移到行首。它在多数文本编辑器和 Mozilla 的 URL 字段内可以使用。

[Ctrl] + [d] = 从终端或控制台中注销,你不必键入 exit 或 logout.

[Ctrl] + [e] = 把光标移到行尾。它在多数文本编辑器和 Mozilla 的 URL 字段内都可使用。

[Ctrl] + [l] = 清除终端。该简化操作与在命令行键入 clear 作用相同。

[Ctrl] + = 清除当前行。 如果你在终端下工作,使用这一简化操作可以清除从光标处到行尾的字符。

[鼠标中间键] = 粘贴突出显示的文本。使用鼠标左键来突出显示文本。把光标指向你想粘贴文本的地方。点击鼠标中间键来粘贴它。

[Tab] = 命令行自动补全。在终端下工作时可使用这一命令。键入命令的前几个字符,然后按 [Tab] 键,它会自动补全命令或显示匹配你键入字符的所有命令。

[向上]和[向下]箭头 = 显示命令历史。当你在终端下工作时,按[向上]或 [向下]箭头来上下查看你在当前目录下键入的命令历史。 当你看到你想使用的命令时,按 [Enter] 键。

clear = 清除终端。在命令行下键入它会清除所有终端窗口中显示的数据。

exit = 注销。在命令行中键入它会注销当前的用户或根用户帐号。

history = 显示命令历史。在命令行中键入它来显示你所键入的被编号的前 500 个命令。要显示较短的命令历史,键入 history 之后,空一格,在键入一个数字。例如:history 20。

reset = 刷新终端屏幕。如果字符不清晰的话,在命令行中键入这个命令会刷新终端屏幕。


作者: suncon    时间: 2003-11-30 00:23
标题: linux系统管理
系统安装配置

目 录
系统安装配置
配置文件
主机
引导和登录注销
文件系统
系统管理
网络
系统命令
守护进程
用户程序
rc和点文件
文件系统
inode
安装和拆卸文件系统
恢复被删除文件
undelete简单方法
ncheck命令
X系统
XServer
XF86Config
网卡
多个网卡
网卡驱动
hosts.equiv和.rhosts文件
目录结构
设置系统
多系统安装
分配磁盘空间
安装Linux
进一步:NTloader引导双系统
IDE RAID卡
Gtk+/Win32中文显示方案
汉化
前言
用蓝点rpm包进行汉化
炎黄中文输入和Chinput的安装方法
GNOME和KDE的汉化
打印
Mozilla和glibc
路由功能
ADSL
IPChains

作者: suncon    时间: 2003-11-30 00:24
标题: linux系统管理
配置文件

介绍
每个 Linux 程序都是一个可执行文件,它含有操作码列表,CPU 将执行这些操作码来完成特定的操作。例如,ls 命令是由 /bin/ls 文件提供的,该文件含有机器指令的列表,在屏幕上显示当前目录中文件的列表时需要使用这些机器指令。几乎每个程序的行为都可以通过修改其配置文件来按照您的偏好或需要去定制。
Linux 中有没有一个标准的配置文件格式?
一句话,没有。不熟悉 Linux 的用户(一定)会感到沮丧,因为每个配置文件看起来都象是一个要迎接的新挑战。在 Linux 中,每个程序员都可以自由选择他或她喜欢的配置文件格式。可以选择的格式很多,从 /etc/shells 文件(它包含被一个换行符分开的 shell 的列表),到 Apache 的复杂的 /etc/httpd.conf 文件。

什么是系统配置文件?
内核本身也可以看成是一个“程序”。为什么内核需要配置文件?内核需要了解系统中用户和组的列表,进而管理文件权限(即根据权限判定特定用户(UNIX_USERS)是否可以打开某个文件)。注意,这些文件不是明确地由程序读取的,而是由系统库所提供的一个函数读取,并被内核使用。例如,程序需要某个用户的(加密过的)密码时不应该打开 /etc/passwd 文件。相反,程序应该调用系统库的 getpw() 函数。这种函数也被称为系统调用。打开 /etc/passwd 文件和之后查找那个被请求的用户的密码都是由内核(通过系统库)决定的。

除非另行指定,Red Hat Linux 系统中大多数配置文件都在 /etc 目录中。

更改配置文件
在更改配置文件时,如果程序不是由系统管理员或内核控制的,就要确保重新启动过使用该配置的程序。普通用户通常没有启动或停止系统程序和/或守护进程的权限。

内核
更改内核中的配置文件会立即影响到系统。例如,更改 passwd 文件以增加用户将立即使该用户变为可用。而且任何 Linux 系统的 /proc/sys 目录中都有一些内核可调参数。只有超级用户可以得到对所有这些文件的写访问权力;其它用户只有只读访问权力。此目录中文件的分类的方式和 Linux 内核源代码的分类方式一样。此目录中的每个文件都代表一个内核数据结构,这些数据结构可以被动态地修改,从而改变系统性能。

注意:在更改其中任何文件的任何值之前,您应该确保自己全面了解该文件,以避免对系统造成不可修复的损害。

/proc/sys/kernel/ 目录中的文件

文件名 描述
threads-max 内核可运行的最大任务数。
ctrl-alt-del 如果值为 1,那么顺序按下这几个键将“彻底地”重新引导系统。
sysrq 如果值为 1,Alt-SysRq 则为激活状态。
osrelease 显示操作系统的发行版版本号
ostype 显示操作系统的类型。
hostname 系统的主机名。
domainname 网络域,系统是该网络域的一部分。
modprobe 指定 modprobe 是否应该在启动时自动运行并加载必需的模块。


守护进程和系统程序
守护进程是永远运行在后台的程序,它默默地执行自己的任务。常见的守护进程有 in.ftpd(ftp 服务器守护进程)、in.telnetd(telnet 服务器守护进程)和 syslogd(系统日志记录守护进程)。有些守护进程在运行时会严密监视配置文件,在配置文件改变时就会自动重新加载它。但是大多数守护进程并不会自动重新加载配置文件。我们需要以某种方式“告诉”这些守护进程配置文件已经被发生了改变并应该重新加载。可以通过使用服务命令重新启动服务来达到这个目的(在 Red Hat Linux 系统上)。

例如,如果我们更改了网络配置,就需要发出:
service network restart。

注意:这些服务最常见的是 /etc/rc.d/init.d/* 目录中存在的脚本,在系统被引导时由 init 启动。所以,您也可以执行如下操作来重新启动服务:
   /etc/rc.d/init.d/script-for-the-service start | stop | status
   start、stop 和 status 是这些脚本接受的输入值,用来执行操作。


作者: suncon    时间: 2003-11-30 00:24
标题: linux系统管理
主机

/etc/host.conf
告诉网络域名服务器如何查找主机名。(通常是 /etc/hosts,然后就是名称服务器;可通过 netconf 对其进行更改)
/etc/hosts
包含(本地网络中)已知主机的一个列表。如果系统的 IP 不是动态生成,就可以使用它。对于简单的主机名解析(点分表示法),在请求 DNS 或 NIS 网络名称服务器之前,/etc/hosts.conf 通常会告诉解析程序先查看这里。

/etc/hosts.allow
请参阅 hosts_access 的联机帮助页。至少由 tcpd 读取。

/etc/hosts.deny
请参阅 hosts_access 的联机帮助页。至少由 tcpd 读取。



作者: suncon    时间: 2003-11-30 00:25
标题: linux系统管理
引导和登录注销

/etc/issue  /etc/issue.net
这些文件由 mingetty(和类似的程序)读取,用来向从终端(issue)或通过 telnet 会话(issue.net)连接的用户显示一个“welcome”字符串。它们包括几行声明 Red Hat 版本号、名称和内核 ID 的信息。它们由 rc.local 使用。
/etc/redhat-release
包括一行声明 Red Hat 版本号和名称的信息。由 rc.local 使用。

/etc/rc.d/rc
通常在所有运行级别运行,级别作为参数传送。例如,要以图形(Graphics)模式(X-Server)引导机器,请在命令行运行下面的命令:init 5。运行级别 5 表示以图形模式引导系统。

/etc/rc.d/rc.local
非正式的。可以从 rc、rc.sysinit 或 /etc/inittab 调用。

/etc/rc.d/rc.sysinit
通常是所有运行级别的第一个脚本。

/etc/rc.d/rc/rcX.d
从 rc 运行的脚本(X 表示 1 到 5 之间的任意数字)。这些目录是特定“运行级别”的目录。当系统启动时,它会识别要启动的运行级别,然后调用该运行级别的特定目录中存在的所有启动脚本。例如,系统启动时通常会在引导消息之后显示“entering run-level 3”的消息;这意味着 /etc/rc.d/rc3.d/ 目录中的所有初始化脚本都将被调用。


作者: suncon    时间: 2003-11-30 00:25
标题: linux系统管理
文件系统

/proc
内核提供了一个接口,用来显示一些它的数据结构,这些数据结构对于决定诸如使用的中断、初始化的设备和内存统计信息之类的系统参数可能很有用。这个接口是作为一个独立但虚拟的文件系统提供的,称为 /proc 文件系统。很多系统实用程序都使用这个文件系统中存在的值来显示系统统计信息。
例如,/proc/modules 文件列举系统中当前加载的模块。lsmod 命令读取此信息,然后将其以人们可以看懂的格式显示出来。下面表格中指定的 mtab 文件以同样的方式读取包含当前安装的文件系统的 /proc/mount 文件。
/etc/mtab
这将随着 /proc/mount 文件的改变而不断改变。换句话说,文件系统被安装和卸载时,改变会立即反映到此文件中。

/etc/fstab
列举计算机当前“可以安装”的文件系统。这非常重要,因为计算机引导时将运行 mount -a 命令,该命令负责安装 fstab 的倒数第二列中带有“1”标记的每一个文件系统。

/etc/mtools.conf
DOS 类型的文件系统上所有操作(创建目录、复制、格式化等等)的配置。


作者: suncon    时间: 2003-11-30 00:26
标题: linux系统管理
系统管理

/etc/group
包含有效的组名称和指定组中包括的用户。单一用户如果执行多个任务,可以存在于多个组中。例如,如果一个“用户”是“project 1”工程组的成员,同时也是管理员,那么在 group 文件中他的条目看起来就会是这样的:user: * : group-id : project1
/etc/nologin
如果有 /etc/nologin 文件存在,login(1) 将只允许 root 用户进行访问。它将对其它用户显示此文件的内容并拒绝其登录。

/etc/passwd
请参阅“man passwd”。它包含一些用户帐号信息,包括密码(如果未被 shadow 程序加密过)。

/etc/rpmrc
rpm 命令配置。所有的 rpm 命令行选项都可以在这个文件中一起设置,这样,当任何 rpm 命令在该系统中运行时,所有的选项都会全局适用。

/etc/securetty
包含设备名称,由 tty 行组成(每行一个名称,不包括前面的 /dev/),root 用户在这里被允许登录。

/etc/usertty

/etc/shadow
包含加密后的用户帐号密码信息,还可以包括密码时效信息。包括的字段有:
   ·登录名
   ·加密后的密码
   ·从 1970 年 1 月 1 日到密码最后一次被更改的天数
   ·距密码可以更改之前的天数
   ·距密码必须更改之前的天数
   ·密码到期前用户被警告的天数
   ·密码到期后帐户被禁用的天数
   ·从 1970 年 1 月 1 日到帐号被禁用的天数

/etc/shells
包含系统可用的可能的“shell”的列表。

/etc/motd
每日消息;在管理员希望向 Linux 服务器的所有用户传达某个消息时使用。



作者: suncon    时间: 2003-11-30 00:26
标题: linux系统管理
网络

/etc/gated.conf gated 的配置。
只能被 gated 守护进程所使用。
/etc/gated.version
包含 gated 守护进程的版本号。

/etc/gateway
由 routed 守护进程可选地使用。

/etc/networks
列举从机器所连接的网络可以访问的网络名和网络地址。通过路由命令使用。允许使用网络名称。

/etc/protocols
列举当前可用的协议。请参阅 NAG(网络管理员指南,Network Administrators Guide)和联机帮助页。C 接口是 getprotoent。绝不能更改。

/etc/resolv.conf
在程序请求“解析”一个 IP 地址时告诉内核应该查询哪个名称服务器。

/etc/rpc
包含 RPC 指令/规则,这些指令/规则可以在 NFS 调用、远程文件系统安装等中使用。

/etc/exports
要导出的文件系统(NFS)和对它的权限。

/etc/services
将网络服务名转换为端口号/协议。由 inetd、telnet、tcpdump 和一些其它程序读取。有一些 C 访问例程。

/etc/inetd.conf
inetd 的配置文件。请参阅 inetd 联机帮助页。包含每个网络服务的条目,inetd 必须为这些网络服务控制守护进程或其它服务。注意,服务将会运行,但在 /etc/services 中将它们注释掉了,这样即使这些服务在运行也将不可用。格式为:service_name sock_type proto flags user server_path args

/etc/sendmail.cf
邮件程序 sendmail 的配置文件。比较隐晦,很难理解。

/etc/sysconfig/network
指出 NETWORKING=yes 或 no。至少由 rc.sysinit 读取。

/etc/sysconfig/network-scripts/if*
Red Hat 网络配置脚本。

作者: suncon    时间: 2003-11-30 00:27
标题: linux系统管理
系统命令

系统命令要独占地控制系统,并让一切正常工作。所有如 login(完成控制台用户身份验证阶段)或 bash(提供用户和计算机之间交互)之类的程序都是系统命令。因此,和它们有关的文件也特别重要。这一类别中有下列令用户和管理员感兴趣的文件。
/etc/lilo.conf
包含系统的缺省引导命令行参数,还有启动时使用的不同映象。您在 LILO 引导提示的时候按 Tab 键就可以看到这个列表。

/etc/logrotate.conf
维护 /var/log 目录中的日志文件。

/etc/identd.conf
identd 是一个服务器,它按照 RFC 1413 文档中指定的方式实现 TCP/IP 提议的标准 IDENT 用户身份识别协议。identd 的操作原理是查找特定 TCP/IP 连接并返回拥有此连接的进程的用户名。作为选择,它也可以返回其它信息,而不是用户名。请参阅 identd 联机帮助页。

/etc/ld.so.conf
“动态链接程序”(Dynamic Linker)的配置。

/etc/inittab
按年代来讲,这是 UNIX 中第一个配置文件。在一台 UNIX 机器打开之后启动的第一个程序是 init,它知道该启动什么,这是由于 inittab 的存在。在运行级别改变时,init 读取 inittab,然后控制主进程的启动。

/etc/termcap
一个数据库,包含所有可能的终端类型以及这些终端的性能。


作者: suncon    时间: 2003-11-30 00:27
标题: linux系统管理
守护进程

守护进程是一种运行在非交互模式下的程序。一般来说,守护进程任务是和联网区域有关的:它们等待连接,以便通过连接提供服务。Linux 可以使用从 Web 服务器到 ftp 服务器的很多守护进程。
/etc/syslogd.conf
syslogd 守护进程的配置文件。syslogd 是一种守护进程,它负责记录(写到磁盘)从其它程序发送到系统的消息。这个服务尤其常被某些守护进程所使用,这些守护进程不会有另外的方法来发出可能有问题存在的信号或向用户发送消息。

/etc/httpd.conf
Web 服务器 Apache 的配置文件。这个文件一般不在 /etc 中。它可能在 /usr/local/httpd/conf/ 或 /etc/httpd/conf/ 中,但是要确定它的位置,您还需要检查特定的 Apache 安装信息。

/etc/conf.modules or /etc/modules.conf
kerneld 的配置文件。有意思的是,kerneld 并不是“作为守护进程的”内核。它其实是一种在需要时负责“快速”加载附加内核模块的守护进程。

作者: suncon    时间: 2003-11-30 00:28
标题: linux系统管理
用户程序

在 Linux(和一般的 UNIX)中,有无数的“用户”程序。最常见的一种用户程序配置文件是 /etc/lynx.cfg。这是著名的文本浏览器 lynx 的配置文件。通过这个文件,您可以定义代理服务器、要使用的字符集等等。下面的代码样本展示了 lynx.cfg 文件的一部分,修改这部分代码可以改变 Linux 系统的代理服务器设置。缺省情况下,这些设置适用于在各自的 shell 中运行 lynx 的所有用户,除非某个用户通过指定 --cfg = mylynx.cfg 重设了缺省的配置文件。
/etc/lynx.cfg 中的代理服务器设置

.h1 proxy
.h2 HTTP_PROXY
.h2 HTTPS_PROXY
.h2 FTP_PROXY
.h2 GOPHER_PROXY
.h2 NEWS_PROXY
.h2 NNTP_PROXY
# Lynx version 2.2 and beyond supports the use of proxy servers that can act as
# firewall gateways and caching servers. They are preferable to the older
# gateway servers. Each protocol used by Lynx can be mapped separately using
# PROTOCOL_proxy environment variables (see Lynx Users Guide). If you have
# not set them externally, you can set them at run time via this configuration file.
# They will not override external settings. The no_proxy variable can be used
# to inhibit proxying to selected regions of the Web (see below). Note that on
# VMS these proxy variables are set as process logicals rather than symbols, to
# preserve lowercasing, and will outlive the Lynx image.
#
.ex 15
http_proxy:http://proxy3.in.ibm.com:80/
ftp_proxy:http://proxy3.in.ibm.com:80/
#http_proxy:http://penguin.in.ibm.com:8080
#ftp_proxy:http://penguin.in.ibm.com:8080/

.h2 NO_PROXY
# The no_proxy variable can be a comma-separated list of strings defining
# no-proxy zones in the DNS domain name space. If a tail substring of the
# domain-path for a host matches one of these strings, transactions with that
# node will not be proxied.
.ex
no_proxy:demiurge.in.ibm.com, demiurge

用户或系统程序在每次启动时都会读取其配置文件。尽管如此,请记住,有些系统程序在计算机打开时情况不一样,它们的行为依赖于在 /etc/ 中的配置文件中读到的内容。所以,用户程序第一次启动时将从 /etc/ 目录中存在的文件读取缺省配置。然后,用户可以通过使用 rc 和 .(点)文件来定制程序,正如下面一节所示。

用户配置文件:.(点)文件和 rc 文件
我们已经看到怎样容易地配置程序。但是如果有的人不喜欢在 /etc/ 中配置程序的方式该怎么办呢?“普通”用户不能简单地进入 /etc 然后更改配置文件;从文件系统的角度来看,配置文件的所有者是 root 用户!这就是大多数用户程序都定义两个配置文件的原因:第一个是“系统”级别的,位于 /etc/;另一个属于用户“专用”,可以在他或她的主目录中找到。

例如,我在我的系统中安装了非常有用的 wget 实用程序。/etc/ 中有一个 /etc/wgetrc 文件。在我的主目录中,有一个名为 .wgetrc 的文件,它描述了我定制的配置(只有在我,也就是用户运行 wget 命令时,才会加载这个配置文件)。其它用户在他们自己的主目录(/home/other)中也可以有 .wgetrc 文件;当然,只有这些用户运行 wget 命令时,才会读取这个文件。换句话说,/etc/wgetrc 文件为 wget 提供了“缺省”值,而 /home/xxx/.wgetrc 文件列举了某个用户的“定制项”。重要的是这只是“一般规则”,并非所有情况都如此。例如,一个象 pine 一样的程序,在 /etc/ 中并没有任何文件,它只在用户主目录中有一个定制配置文件,名为 .pinerc。其它程序可能只有 /etc/ 中的缺省配置文件,而且可能不允许用户“定制”这些配置文件(/etc 目录中只有少数 config. 文件是这种情况)。


作者: suncon    时间: 2003-11-30 00:29
标题: linux系统管理
rc和点文件

通常使用的 rc 和 .(点)文件
~/.bash_login
请参考“man bash”。如果 ~/.bash_profile 不存在,bash 则将 ~/.bash_login 作为 ~/.bash_profile 处理。

~/.bash_logout
请参考“man bash”。在退出时由 bash 登录 shell 引用。

~/.bash_profile
由 bash 登录 shell 引用 /etc/profile 之后引用。

~/.bash_history
先前执行的命令的列表。

~/.bashrc
请参考“man bash”。由 bash 非登录交互式 shell 引用(没有其它文件)。除非设置了 BASH_ENV 或 ENV,非交互式 shell 不引用任何文件。

~/.emacs
启动时由 emac 读取。

~/.forward
  如果这里包含一个电子邮件地址,那么所有发往 ~ 的所有者的邮件都会被转发到这个电子邮件地址。

~/.fvwmrc ~/.fvwm2rc
fvwm 和 fvwm2(基本的 X Window 管理器)的配置文件。

~/.hushlogin
请参考“man login”。引起“无提示”登录(没有邮件通知、上次登录信息或者 MOD 信息)。

~/.mail.rc
邮件程序的用户初始化文件。

~/.ncftp/ ncftp
程序的目录;包含书签、日志、宏、首选项和跟踪信息。请参阅 man ncftp。ncftp 的目的是为因特网标准文件传输协议(Internet standard File Transfer Protocol)提供一个强大而灵活的接口。它旨在替换系统所使用的标准的 ftp 程序。

~/.profile
请参考“man bash”。如果 ~/.bash_profile 和 ~/.bash_login 文件不存在,bash 则将 ~/.profile 作为 ~/.bash_profile 处理,并被其它继承 Bourn 的 shell 使用。

~/.pinerc Pine 配置

~/.muttrc Mutt 配置

~/.exrc
这个文件可以控制 vi 的配置。
示例:set ai sm ruler
在此文件中写入上面一行会让 vi 设置自动缩进、匹配括号、显示行号和行-列这几个选项。

~/.vimrc
缺省的“Vim”配置文件。和 .exrc 一样。

~/.gtkrc GNOME 工具包(GNOME Toolkit)。

~/.kderc KDE 配置。

~/.netrc
ftp 缺省登录名和密码。

~/.rhosts
由 r- 工具(如 rsh、rlogin 等等)使用。因为冒充主机很容易,所以安全性非常低。
必须由用户(~/ 的所有者)或超级用户拥有。
列出一些主机,用户可以从这些主机访问该帐号。
如果是符号链接则被忽略。

~/.rpmrc
请参阅“man rpm”。如果 /etc/rpmrc 不存在则由 rpm 读取。

~/.signature
消息文本,将自动附加在从此帐号发出的邮件末尾。

~/.twmrc
twm(The Window Manager)的配置文件。

~/.xinitrc
启动时由 X 读取(而不是由 xinit 脚本读取)。通常会启动一些程序。
示例:exec /usr/sbin/startkde
如果该文件中存在上面这行内容,那么在从这个帐号发出 startx 命令时,这一行就会启动“KDE 视窗管理器”(KDE Window Manager)。

~/.xmodmaprc
此文件被传送到 xmodmap 程序,而且可以被命名为任何文件(例如 ~/.Xmodmap 和 ~/.keymap.km)。

~/.xserverrc
如果 xinit 可以找到要执行的 X,xinit 就会将该文件作为 X 服务器运行。

~/News/Sent-Message-IDs
gnus 的缺省邮件历史文件。

~/.Xauthority
由 xdm 程序读和写,以处理权限。请参阅 X、xdm 和 xauth 联机帮助页。

~/.Xdefaults,~/.Xdefaults-hostname
在主机 hostname 的启动过程中由 X 应用程序读取。如果找不到 -hostname 文件,则查找 .Xdefaults 文件。

~/.Xmodmap
指向 .xmodmaprc;Red Hat 有使用这个名称的 .xinitrc 文件。

~/.Xresources
通常是传送到 xrdb 以加载 X 资源数据库的文件的名称,旨在避免应用程序需要读取一个很长的 .Xdefaults 文件这样的情况。(有些情况曾经使用了 ~/.Xres。)

~/mbox 用户的旧邮件。


作者: suncon    时间: 2003-11-30 00:29
标题: linux系统管理
文件系统

Linux文件系统是Linux系统的心脏部分,提供了层次结构的目录和文件。文件系统将磁盘空间划分为每1024个字节一组,称为块(也有用512字节为一块的,如:SCOXENIX)。编号从0到整个磁盘的最大块数。
全部块可划分为四个部分,块0称为引导块,文件系统不用该块&#59;块1称为专用块,专用块含有许多信息,其中有磁盘大小和全部块的其他两部分的大小。从块2开始是i节点表,i节点表中含有i节点,表的块数是可变的,后面将做讨论。i节点表之后是空闲存储块(数据存储块),可用于存放文件内容。文件的逻辑结构和物理结构是十分不同的,逻辑结构是用户敲入cat命令后所看到的文件,用户可得到表示文件内容的字符流。物理结构是文件实际上如何存放在磁盘上的存储格式。用户认为自己的文件是边疆的字符流,但实际上文件可能并不是以边疆的方式存放在磁盘上的,长于一块的文件通常将分散地存放在盘上。然而当用户存取文件时,Linux文件系统将以正确的顺序取出各块,给用户提供文件的逻辑结构。

当然,在Linux系统的某处一定会有一个表,告诉文件系统如何将物理结构转换为逻辑结构。这就涉及到i节点了。i节点是一个64字节长的表,含有有关一个文件的信息,其中有文件大小、文件所有者、文件存取许可方式,以及文件为普通文件、目录文件还是特别文件等。在i节点中最重要的一项是磁盘地址表。

该表中有13个块号。前10个块号是文件前10块的存放地址。这10个块号能给出一个至多10块长的文件的逻辑结构,文件将以块号在磁盘地址表中出现的顺序依次取得相应的块。当文件长于10块时又怎样呢?磁盘地址表中的第11项给出一个块号,这个块号指出的块中含有256个块号,至此,这种方法满足了至多长于266块的文件(272384字节)。如果文件大于266块,磁盘地址表的第12项给出一个块号,这个块号指出的块中含有256个块号,这256个块号的每一个块号又指出一块,块中含256个块号,这些块号才用于取文件的内容。磁盘地址中和第13项索引寻址方式与第12项类似,只是多一级间接索引。

这样,在Linux系统中,文件的最大长度是16842762块,即17246988288字节,有幸是Linux系统对文件的最大长度(一般为1到2M字节)加了更实际的限制,使用户不会无意中建立一个用完整个磁盘区所有块的文件。

文件系统将文件名转换为i节点的方法实际上相当简单。一个目录实际上是一个含有目录表的文件:对于目录中的每个文件,在目录表中有一个入口项,入口项中含有文件名和与文件相应的i节点号。当用户敲入catxxx时,文件系统就在当前目录表中查找名为xxx的入口项,得到与文件xxx相应的i节点号,然后开始取含有文件xxx的内容的块。


作者: suncon    时间: 2003-11-30 00:30
标题: linux系统管理
inode

一个inode有128 byte。在新建文件系统时, 通常会有一个参数, 用来描述要分配多少比例的空间给inode table。举例来说newfs -i 2048是指文件系统中, 每分配2048 byte给data area, 就分配一个inode。但一个inode并不一定用掉2048 byte, 也不是说 files allocation的最小单位是2048 byte, 它仅仅只是代表文件系统中inode table/data area分配空间的比例是 128/2048 也就是 1/16。如果 inode table 太小, 那么在每个文件都很小的时候, 就会发生inode用光而存储空间多余的情况。file allocation的最小单位和inode多少没有关系

作者: suncon    时间: 2003-11-30 00:30
标题: linux系统管理
安装和拆卸文件系统

Linux文件系统是可安装的,这意味着每个文件系统可以连接到整个目录树的任意节点上(根目录总是被安装上的)。安装文件系统的目录称为安装点。
/etc/mount命令用于安装文件系统,用这条命令可将文件系统安装在现有目录结构的任意处。

安装文件系统时,安装点的文件和目录都是不可存取的,因此未安装文件系统时,不要将文件存入安装点目录。文件系统安装后,安装点的存取许可方式和所有者将改变为所安装的文件根目录的许可方式和所有者。

安装文件系统时要小心:安装点的属性会改变!还要注意新建的文件,除非新文件系统是由标准文件建立的,系统标准文件会设置适当的存取许可方式,否则新文件系统的存取许可将是777!

可用-r选项将文件系统安装成只读文件系统。需要写保护的带驱动器和磁盘,应当以这种方式来安装。

不带任何参数的/etc/mount可获得系统中所安装的文件系统的有关信息。包括:文件系统被安装的安装点目录,对应/dev中的设备,只读或可读写,安装时间和日期等。从安全的观点来讲,可安装系统的危险来自用户可能请求系统管理员为其安装用户自己的文件系统。如果安装了用户的文件系统,则应在允许用户存取文件系统前,先扫描用户的文件系统,搜索SUID/SGID程序和设备文件。在除了系统管理员外任何人不能执行的目录中安装文件系统,用find命令或secure列出可疑文件,删除不属用户所有的文件的SUID/SGID许可。

用户的文件系统用完后,可用umount命令卸下文件系统。并将安装点目录的所有者改回系统管理员,存取许可改为755。


作者: suncon    时间: 2003-11-30 00:30
标题: linux系统管理
恢复被删除文件

前些天被我误删掉的 home directory 下的几千个文件,经过本人数天的连续奋战,现绝大部分已恢复,算是奇迹也不是奇迹。
删掉文件其实只是将指向数据块的索引点 (information nodes) 释放,只要不被覆盖,数据其实还在硬盘上,关键在于找出索引点,然后将其所指数据块内的数据抓出,再保存到另外的分区。

我先在网上查有关 linux undelete 的信息,找到一个 ext2fs-undeletion 的mini-Howto,后发觉在RH6.2的 /usr/doc/HOWTO 内也有,按它的方法,先将被删掉数据的盘区 umount 掉(防止写盘覆盖被删除的数据,显然这一步在误删数据后做得越快越好,尤其是对多人使用的计算机),然后查文件系统中哪些索引点最近被释放:

#debugfs /dev/hda6 (my 'home' partition)
debugfs: lsdel

即给出相应信息,包括索引点,文件属主,大小,删除日期等。也可将结果输出到一个文件中

debugfs: quit
# echo lsdel | debugfs /dev/hda6  lsdel.out

还可用 debugfs 中 stat 查看某一索引点的详细信息:

   debugfs: stat 148003

尤其注意其数据块是否连续!

然后将该索引点所指数据块内的数据抓出并存到另一盘区:

   debugfs: dump 148003 /dosd/tmp/recovered.001

按该 mini-Howto 的说法,以上方法只使用于大小不超过 12 个 block 的文件,对于超过 12 个 block 的文件,由于 unix 是将数据分段保存的,需要将各段数据分别取出再拼接,所以比较麻烦。但我用 stat 检查的结果,大文件的数据块也都是紧挨着的,并没有被分段, 于是我试着用同样的方法将文件 dump 出来,发觉结果完全正确,对六百多兆的大文件也适用!不知道 linux 就是连续保存文件的,还是因为我的计算机只有我一个用户而使然,反正我用上述简单方法将我误删的绝大部分文件都恢复了。

需要说明的一点是,恢复的文件是没有保留文件名的,需要你查看文件内容后,再重新命名。

靠人不如靠己,当初没有轻易放弃看来是正确的,尽管我有少量备份。不过经过这场灾难,本人的指法倒是又熟练了不少:几千个文件得一个一个恢复!


作者: suncon    时间: 2003-11-30 00:31
标题: linux系统管理
undelete简单方法

发信人: DA (穷开心), 信区: LINUX
标 题: linux环境下如何undelete
发信站: 武汉白云黄鹤站 (Sun Feb 4 16:35:32 2001), 转信
在bashrc加入以下指令,但是先要在/目录下创建一个名为.trash的子目录

alias rm    'mv -f !* ~/.trash'
alias undel   'mv ~/.trash/!* ./!*'
alias cleantrash '/bin/rm -rf ~/.trash&#59; mkdir ~/.trash&#59; sync'
alias lrm    'ls ~/.trash'

若文档是直接用rm命令删除的,理论上 ext2 内 rm 掉的档案还是可以用debugfs , ext2ed 救回来的.当然... 被 overwrite 掉就没救了.

作者: suncon    时间: 2003-11-30 00:32
标题: linux系统管理
ncheck命令

用于检查文件系统,只用一个磁盘分区名作为参数,将列出i节点号及相应的文件名。i节点相同的文件为建链文件。注意所列出的清单文件名与mount命令的第一个域相同的文件名前部分将不会列出来。因为是做文件系统内部的检查,ncheck并不知道文件系统安装点以上部分的目录。
也可用此命令来搜索文件系统中所有的SUID和SGID程序和设备文件,使用-s选项来完成此项功能。

作者: suncon    时间: 2003-11-30 00:33
标题: linux系统管理
X系统

XServer

        Linux下的X Server配置快速攻略
老看到有人在BBS上问关于X Server配置的问题, 这也许是安装Linux的一个难点 问题吧, 稍微总结了一下, 写了这个攻略, 希望X Server没配好的网友都能看一下, 希望不会再有最新显卡只能用320x200之类的问题 都是很初步的介绍

首先明确一下X Server的概念, 由于X这个Server/Client关系与通常的有点不一样, 老有网友搞不清楚. 简单地说, 所谓X Server, 指的就是负责接收键盘鼠标输入和负责屏幕输出的程序, 它的作用是屏蔽硬件差别, 提供一个设备无关的接口, 而与Server对应的就是client了. 在MS Windows中是没有这个概念的, X采用了这种结构后也许效率上受点影响, 但却带来了network-transparent的好处, 就是说X Server/Client互相独立, 可以在本地, 也可在网络上不同地方, 这就有了MS Win一直难以实现的远程GUI界面功能. 前面的文章已经介绍了, 现在Linux主要就有3种X Server, 下面针对其配置方法简单地说一下其特点和配置方法(我推荐用AccelerateX 4.1).

1. XFree86 http://www.xfree86.org

假如你对你的显卡了解很清楚, 可以直接开始, 要不然最好先用SuperProbe测一下你的显卡的芯片, 把型号稍微记一下, 省得呆会儿麻烦. 假如你的显卡很新的话,最好用最新版本的(当前3.3.2), 这个对新显卡支持得好一些. XFree86的好处是各种distribution一般都带, 还有好多不同OS的版本, 可以在安装时就装上配置

我想说一下X11和XFree86的关系, 现在的X Window system由The OpenGroup负责开发(X11R6.4), X11R6主要由X11的库和sample X11 clients组成, 而XFree86主要就是开发i386上的X Server(与硬件相关的). 但在它们distribute时都集成在一起了,如X11R6.4带了XFree86 3.3的Server, 而XFree86中也把X11R6的lib/clients集成在一起了

XFree86 Servers基本上就是分XF86_Mono(单色), XF86_VGA16(16色VGA), XF86_SVGA(256色或更多), XF86_Accel(加速卡, 如Mach*, S3*等)等几类. XFree86 Server的特点就是一个很大的ELF文件(2M左右), /usr/X11R6/bin下以XF86_打头的就是了, 然后一般是将X做个符号连接到你当前的X Server上.

XFree86的配置有这几个(注意大小写):
(1) 基于命令行的xf86config
这个东西是纯命令行的, 一般安装X时都会装上, 按其提示一步步走就可以了但由于没有Back功能, 选错了只好重来, 不太方便

(2) 图形界面的XF86Setup
XF86Setup是个GUI的配置工具, 第一次开始时需要VGA16 Server(你总得有个default X Server才能有GUI吧?), 比xf86config稍微好用一些, 好歹是GUI的

(3) 基于dialog的Xconfigurator
假如你用RedHat的话, 还有一个文本方式下基于对话框的也不错, 就是Xconfigurator这个东西挺方便的, 安装RedHat时就是用它配的, 因此实际上你已经用过了

这些工具实际上的作用就是生成一个Server的配置文件XF86Config. 其实关键是要支持你的显卡硬件, 这个通了, XF86Config就好办了, 改改总能对的. 要注意这个文件存放的地方, RedHat是/etc/X11/XF86Config, Debian/Slackware是/etc/XF86Config. 它的结构也是很清楚的, 就是搞得有点太复杂了, 你也可以手工编辑它来修改. 如你想改Virtual Screen, 那就查Virtual(vi下/Virtual), 然后找到与你的Server对应的Virtual改了就行了, 还有分辨率什么的, 都可手动改

另外提一下X Server的几个hot key: Ctrl_Alt_+/- 可以动态改变分辨率, 但颜色位数好象没法改, 用X -bpp 15/16/24 等参数来指定X Server的颜色数若你用startx的话就这样 startx -- -bpp 16/24 (startx调用的是xinit, --后面的是传给Server的参数) Ctrl_Alt_BackSpace可以立即退出X.

2. Accelerated X 4.1 http://www.xig.com

假如你的显卡特新(如AGP), 那XFree86也许就不行了, 用Accelerated X 4.1吧, 这是个很不错的commercial X Server, 但已经有crack了. 它的最大好处在于其网页上不断地会有最新显卡的updates, 而且都是可以免费download的! 我把一些download下来了,需要的网友可拿去试试. 它的安装就比XFree86简单多了, 解开tgz, 看一下README,运行安装程序, 输入serial就OK了, 十分方便.

AX的程序装在/usr/X11R6/lib/X11/AccleratedX 下面, 它很模块化的, 显卡, 显示器,键盘, 鼠标几部分, 不象XFree86那样搞成一个大的ELF文件. 另外它的两个可执行文件/usr/X11R6/bin/下面: Xaccel(Server) Xsetup(配置程序)

它的config文件放在/etc/Xaccel.ini中, 只有很短的几行, 比XF86Config清晰简单多了运行Xsetup时可加参数-text/graphics来分别进文本/GUI配置环境, 不加参数它检测是否有/etc/Xaccel.ini来进不同环境.

3. MetroLink X Server http://www.metrolink.com

MetroX Server在Official的RedHat和InfoMagic的CD中是带的, 安装时可以选择安装它或XFree86 Server. 程序都装在/usr/X11R6/lib/X11/Metro下面, 也是模块化的.但这个Metro X Server感觉没有AX 4.1支持的显卡新, 但也有它的用处(如我的老S3 868在AX 4.1上只有256色, 而用MetroX就有16bit色了 *_*)

可执行文件 /usr/X11R6/bin/下面: Xmetro(Server) configX(配置程序)那个configX是个Motif界面的GUI配置程序, 会自动启动VGA方式的Xmetro Server来运行


作者: suncon    时间: 2003-11-30 00:44
标题: linux系统管理
XF86Config

配置Xwindow可以用工具来配置,也可以用手工配置。工具有图形界面的Xconfigure和文本界面的xf86config。手工配置为修改配置文件/etc/X11/XF86Config。在这个文件中,#表示注释,也就是这项不起作用。
这个文件的结构为:

Section Section Name
Subsection Subsection Name
EndSubsection
EndSection

下面简单介绍一下每个Section的配置方法。

Section Files
指定一些文件的路径,一般用的有:

RgbPath
指定RGB数据库文件的路径.一般为/usr/X11R6/lib/X11/rgb

FontPath
指定字体文件的路径及相应选项(常见的有是否允许放缩),同时也可以直接从字体服务器来获取字体,如RH现在的做法

Section ServerFlags
其中一般有三项:

NoTrapSignals
跟调试有关,我们一般不用他。

DontZap
是否允许ctrl+alt+backspace键退出xwindows,加上#后表允许。

DontZoom
是否允许ctrl+alt+数字键盘上的+或-改变屏幕的分辨率。

Section Keyboard
定义键盘类型,一般不需要修改。

Section Pointer
定义鼠标类型。

Protocol
为鼠标类型,一般有Microsoft,PS/2,Mousesystem等,根据你自己的鼠标类型而定。Device为鼠标的设备,为/dev/mouse,这是一个符号
链接,一般指向/dev/ttyS0(即DOS的COM1),或者为/dev/ttyS1(COM2)等。

Emulate3Buttons
是否模拟3键鼠标,如果是的话,则两键鼠标可以用左右键同时按下的方法来模拟中键。两键鼠标可以用左右键同时按下的方法来模拟中键。

Emulate3Timeout timeout
是指在多长的间隔内按下两键则模拟中键。

Section Monitor
指你的显示器的类型。

Identifier
在后头Screen节中要用到,Section节中根据这个Identifier来识别显示器。

VendorName
显示器的制造商。

ModelName
显示器的型号。

HorizSync
水平扫描频率范围(单位:kHZ)。

VertRefresh
垂直扫描频率范围(单位:HZ)。

以上两项要根据你的显示器手册而定,设置不正确的话,有可能烧掉显示器。如果不知道的话,可以用从小到大试
验的方法找到正确的范围,但一定要小心,发现不正常,立刻用ctrl+alt+backspace退出。一般HorizSync的范围为31.5-31.75左右,VertRefresh为50-70左右,也有能达到100的。

Modeline
显示的模式
其中有很多行,即很多种模式,会自动选择一种最好的模式进入,因此,不必把其它不需要的模式,比如640x480删掉。
格式为:Modeline 类型名称 类型描述其中类型描述分为4个部分,前3个部分是必须有的。第一个部分为1个数字,是你的显示器的时钟频率,第2个部分包括4个数字,第一个为水平的象素个数,其它3个数为水平扫描的起始和结束范围。第3个部分同第2个部分,只是确定的是垂直的内容。第4个部分为Interlace,DoubleScan,±HSync,±VSync,±CSync,Composite和HSkew。DoubleScan说明每行都要扫描两遍。这些一般都用的不多。

Section Device
显卡的类型。

Section Screen
对于每个X的服务器,如XF86_VGA16,XF86_SVGA,XF86_FBDev等,指定它们的配置。
在启动X时,运行的是哪个X服务器,由文件/etc/X11/X决定。这个文件是一个符号链接。如果你想用XF86_SVGA来启动你的Xwindow的话,就把这个文件指向/usr/X11R6/bin/XF86_SVGA。在这个Section中,Driver指的是这个Section是针对哪个服务器的。Device和Monitor为使用哪个显示器和显卡。里头一般有SubSetion Display,设置显示时的一些参数。Depth指颜色深度,8,15,16等。Modes指使用哪种显示模式。640x480,800x600等。ViewPort指进入后,真实屏幕在虚屏上的位置。

要了解更详细的关于XF86Config的配置信息,可以在提示符下输入如下命令:

#man XF86Config

作者: suncon    时间: 2003-11-30 00:45
标题: linux系统管理
网卡

多个网卡

当你有两块网卡时,在lilo.conf里加上
append = ether=0,0,eth1
当你插了三块, 则为:
append = ether=0,0,eth1 ether=0,0,eth2

举例如下:
boot = /dev/hda
#compact    # faster, but won't work on all systems.
delay = 50
vga = normal  # force sane state
append= ether=0,0,eth1
# ramdisk = 0   # paranoia setting
# End LILO global section
# Linux bootable partition config begins
image = /zImage
root = /dev/hda1
label = linux
read-only # Non-UMSDOS filesystems should be mounted read-only for checking
# Linux bootable partition config ends

这是不知道网卡irq和iobase时的做法(尤其是PCI网卡时,象3c590...)当知道网卡irq和iobase时,还是指定的好:例如:两块3c590:

append=ether=9,0xfce0,eth0 ether=5,0xfcc0,eth1

注:如果已经编译成模块的话,应该在/etc/rc.d/rc.modules(在Redhat里是/etc/conf.modules)加上类似的一行:

   /sbin/modprobe ne io=io1,io2

先试试上面的方法吧.


作者: suncon    时间: 2003-11-30 01:00
标题: linux系统管理
网卡驱动

在第n次看到如何在Linux下配置我的XXX网卡这样的问题之后我觉得有必要把一些最基本的Linux网卡安装的知识总结一下,
省省大家的时间.以后有空再写声卡的和显卡的.
本文主要面对新新手,不对任何高难度问题进行讨论,包括双网卡,正常编译了driver也不能用的古怪网卡等.本文的主要目的是告诉
新新手,Linux下网卡是怎样被驱动的.本文不讨论安装Linux的问题,假设用户已经成功安装了Linux,就等驱动网卡.

第一步--不要再问Linux下能够装XXX卡么?这样的问题,Linux是个开放的系统,借助于网络上无数的高手,几乎所有的硬件都能找到
支持.

首先需要指出,Linux下对网卡的支持往往是只对芯片的,所以对某些不是很著名的网卡,往往需要知道它的芯片型号以配置Linux.
比如我的Accton 网卡,就不存在Linux的driver,但是因为它是NE2000兼容,所以把它当NE2000就可以在Linux下用了.所以当你有一块
网卡不能用,在找Linux的driver之前一定搞清楚这个网卡用的什么芯片,跟谁兼容,比如3c509,ne2000,etherexpress等等.这样的型号一般都在网卡上最大的一快芯片上印着,抄下来就是了.

最普遍使用也许是最好配的网卡也许就是Ne2000兼容卡了,我用它来作例子.注意实际上很多廉价卡都是NE2000兼容的.

对于NE2000卡,先要作的一件事情,是将网卡设定为Jumpless模式.很多现在的网卡缺省都是PnP模式,这在95下的确能减少很多麻烦,
但是Linux不支持,所以Linux下必须是Jumpless模式.一般所有网卡都有带的驱动盘和DOS下可执行的一个设定程序,用该程序将网卡设为Jumpless.当然如果是老卡,本来就不是PnP,不用管这个.注意,这里主要是ISA的NE2000,关于PCI的NE2000,需要另外设置.

下来就是得弄清楚网卡的IO地址和IRQ.这是两个非常重要的网卡驱动参数.这个最简单就是还用那个网卡的设定程序,设定完
Jumpless之后肯定有地方可以软设定IO和IRQ.老一些的卡得跳线,道理一样.另外一个方法是如果网卡能在95或NT下工作,去95下的control panel里看这个卡的properities,查IO和IRQ.

OK,到现在,你知道了你的卡是NE2000兼容,知道了它是在Jumpless模式下,知道了IO地址和IRQ,就可以安装了.

Linux系统与95这些系统不同的一点是它是运行在内核上的,所谓内核,就是把系统最核心的部分孤立出来编程,将各种驱动程序,内存控制等部分编在一起.于95不同,Linux得内核是公开的,经常更新的,这样不需要更新整个系统,用户只需要把最新的内核原程序download下来编译,就可以得到一个支持更多硬件,更多文件系统,更安全的系统了.所以需要指出,Linux的Driver很少有象95下那样是安装的.Linux下的driver大多数都是以C程序形式发布,或者在内核里,或者需要用户自己修改内核代码.总之要让Driver运行,得重新配置编译内核.如何操作Linux内核是学习Linux中非常重要的一节.Linux的新手最好在这里多下点功夫搞清楚.有关核心的问题建议看Linux How To文档中的kernel How to.

Anyway, Linux已经装好了,那么用的是什么内核呢?一般缺省的Linux内核是从安装盘上来的.那个内核一般包括大多数硬件的驱动
程序,比如Ne2000卡.所以未一定要重新编译内核,也许现有的内核就可以驱动.所以下一步就是把网卡插入计算机,看看Linux能否发现它.这可以从Linux的启动画面中看出来,如果你发现如下的一行:

   eth0:NE2000 card found at 0x300 using IRQ 05

那就说明Linux发现了NE2000卡,在IO 300, IRQ 05的地方.

如果Linux没有发现你的网卡,但是你确认你网卡得型号和参数,比如我的网卡是NE2000兼容,IO 0x300, IRQ 05.那么可以修改
Linux启动文件专门搜索这个设备.这个文件在/etc/rc.d/rc.modules里对于NE2000,是这样的:

   #/sbin/modprobe ne io=0x300 # NE2000 at 0x300

将最前面的#号去掉,再启动机器试试.

另外该文件里还可以发现对其它系列网卡比如3C系列的autoprobe.

OK,到现在启动屏幕上也没有出现

   eth0:NE2000 card found at 0x300 using IRQ 05

这样的好消息,那么你就得编译内核了.

编译内核之前一定要搞清楚的是网卡的芯片号.比如我有一块SMC的网卡,但是我是无法在Linux的内核配置菜单里找到SMC这样的字样的,Linux不是win95,有那么长一串厂商牌号等.我在这个SMC的卡上找到了digital 21140-AE的字眼,于是我知道这个卡用的是DEC 21140-AE芯片,于是按照这个寻找,就找到了驱动.

知道了芯片类型,或者兼容类型(比如ne2000)就可以开始编译内核了.具体的针对不同系统的内核编译推荐先看看有关内核编译的文章,这里不多作介绍.

进入/usr/src/linux
运行make menuconfig进入菜单配置内核.找到Network Device Support.选则EtherNet,再选则相应的芯片号.如果是ISA系线的NE2000,就选则other ISA cards,选则NE2000/NE1000 ISA support.如果是PCI的网卡,就选则PCI ethernet adapters.注意,PCI卡未必都能这样驱动,很多都不行,得另外找driver.比如Intel PCI EtherExpress Pro 100等.

有关其它选项希望能多自己摸索.多看看help和how-to.

配置完内核后,运行make dep&#59;make&#59;make zlilo就可以了.如果内核选项过多会出现过大的情况而无法安装.那么需要把一些不必要的驱动去掉.


一般这样之后再启动就可以发现网卡了.驱动了网卡,下一步就是设定TCP/IP这些东西.这就不是这里的内容了.

我的经验,Linux下NE2000兼容卡都比较好设.3c系列的卡也都有支持.至于其它卡比如我的DEC 21140就麻烦很多.另外有些卡即使用某种芯片也未必就能用这个芯片的驱动,这种情况就是有驱动程序也不能用,就需要上网查了.

有关Intel Etherexpress系列卡的配置.Linux内核中有Etherexpress 16的支持,但没有其它卡的driver.在http://cesdis.gsfc.nasa.gov/linux/drivers/eepro100.html里有关于EtherExpress 100B pro的讨论.在那里可以download到一个c源码的
驱动程序,编译进内核就可以了.

那么,如果以上都试过了,而你的网卡的确还是不能认,那么你需要上网查driver了.在网上查东西是一门看起来简单实际上极体现经验的学问.建议寻找Linux网卡的driver从http://cesdis.gsfc.nasa.gov/linux/drivers/开始.在那里可以发现的针对网卡得驱动有:

DEC DC21*4* Tulip chip based cards
3Com PCI Etherlink PCI and EISA cards
Intel EtherExpress Pro100B, Pro100+ and Pro10+ PCI
3c515 ISA Fast Etherlink card
SMC EtherPower II (EPIC/100 83c170 chip) driver.
RealTek RTL8129/8139 driver.
Lite-On lc82c168 PNIC driver (now merged with the Tulip driver).
Macronix MX98713 and ASIX experimental drivers are now merged with the Tulip driiver).
VIA Rhine (VT86C100A and 3043) driver (now released).
Winbond w89c840 driver (beta test). Note: this driver was written without officiial documentation.
TI ThunderLAN driver (external link -- Caldera/James Banks).
Hewlett Packard 100VG driver updates (external link -- Yaroslav).

Intel EtherExpress Pro/10 PCI driver (remote link).
3c509/3c529/3c579 ISA/MCA/EISA EtherLink III driver update. The driver now deteccts multiple cards when loaded as a module.
AMD LANCE/PCnet driver update. The driver is now usable as a loadable module.
Cirrus/Crystal/IBM CS8900 series driver (remote link).
PCI NE2000 driver (local page)
PCI NE2000 updates (remote link)

Intel Etherexpress Pro 100,
DEC 21X4* based board,
3Com EtherLink III PCI/EISA (3c590 3c592,3c595,3c597,3c900 3c905)
Intel EtherExpress Pro/10 PCI9 With i82596 Chip)
TI ThunderLan
PCI NE2000
Packet Engines Yellowfin G-NIC
SMC EtherPower II (EPIC/100 83c170 chip)
RealTek RTL8129/8139

同时还有一个Ecom EtherLink III family 的setup程序,没有用过,也许不错.

如果这里你还是没有找到相应的网卡驱动,那么就去search了.我推荐的方法是上Internet Newsgroup查.因为你绝对不是第一个在Linux
下用这个网卡的人,你的问题绝对有人在网络上问过.而且有人回答过.那么问题就是如何找到他. 最简单的方法是打开netscape 到www.dejanews.com去.这里的关键是关键字的选则,比如我有个卡的芯片是DEC的21140,那么我考虑到21140已经是个长数字,于是输入21140 linux来搜索,这里Linux是必须的,否则看到上千篇关于21140 win95的驱动问题,是不是很烦?结果21140 linux很快就找到了有关文章.

如果这样也找不到驱动程序,或者有了驱动程序不知道怎么用,用了出问题,再来版上问.记得把具体的网卡型号,芯片型号,你作过什么努力,什么问题等都写清楚,以便于他人帮助.

Remember: God helps those who help themselves.


作者: suncon    时间: 2003-11-30 01:00
标题: linux系统管理
hosts.equiv和.rhosts文件

发信人: cloudsky (晓舟·轩辕明月), 信区: Linux
标 题: hosts.equiv和.rhosts文件
发信站: 武汉白云黄鹤站 (Thu Feb 4 23:04:45 1999) , 转信
标题:hosts.equiv和.rhosts
文件
远程用户启动rlogin访问你的本地主机,此时做如下安全性检查:

1. 本地rlogind在本地/etc/passwd文件中寻找远程用户名,没有则拒绝访问

2. /etc/passwd中存在远程用户名,rlogind在/etc/hosts.equiv寻找远程主机名,找到则允许访问。

3. /etc/hosts.equiv无远程主机名,rlogind在$HOME/.rhosts寻找远程主机名,找到且该项后无用户名则允许访问,找到且该项后有用户名,若远程用户名位于其中,则允许访问。注意这里的$HOME是与远程用户同名的本机用户的主目录。

4. 若通过了/etc/passwd的检查,但没有通过/etc/hosts.equiv或者$HOME/.rhosts的检查,远程用户给出口令可以登录本机,但无法使用rcp、rsh等。反之则可以使用rcp或者rsh。

5. /etc/hosts.equiv中的+意味着任意主机,此时与/etc/hosts无关。netterm下rlogin除root外的所有用户可以成功,solaris下简单的rlogin hostname同netterm,但是rlogin -l username hostname不成功。这个事实说明netterm下rlogin的时候,指定的参数实际上是远程主机的当前用户名。还说明hosts.equiv文件不支持rlogin -l username hostname,不支持root的rlogin。

值得注意的是两个+号出现在$HOME/.rhosts中是非常危险的,意味着任意主机任意用户都可以不用口令登录到你的用户上来。.rhosts中的第一个+意味着所有主机,与/etc/hosts文件无关。.rhosts中的第二个+意味着所有用户,与/etc/passwd文件无关。若只有一个+,netterm中的rlogin可以成功,但来自sco root下的rlogin -l jhli hostname不成功,来自sco jhli的rlogin -l jhli hostname和rlogin hostname都成功。说明当.rhosts文件中只有主机名时,不支持rlogin -l username hostname,这点和/etc/hosts.equiv一样。若+ root,则netterm因无法实现rlogin -l username hostname而失败(只能实现rlogin hostname),来自sco root下的rlogin -l jhli hostname成功。+ +则都成功。注意,$HOME/.rhosts支持root的rlogin。

当这两个文件中没有使用+号代表所有主机时,与/etc/hosts文件有关。这两个文件中指定的hostname必须是/etc/hosts文件中出现的,而且必须是主机名,IP地址和别名无效。在/etc/hosts文件中别名位于第三列。做主机判断时与在远程主机上hostname命令所显示的东西无关,与远程主机上的/etc/hosts定义无关。如果出现与这里讲述不符合的,是因为缓冲没有得到刷新的缘故,可以通过ping相关名字得到检验。此外,若没有使用+号,rlogin localhost、rlogin 127.0.0.1的效果和rlogin 134.*.*.*、rlogin zhuzhou的效果不一样,前者的检查不会通过。当hosts.equiv中定义为localhost时,效果则反过来。

6. rlogin -l username hostname和rlogin hostname的检查有点细微的差别,首先在/etc/passwd的检查中是以-l的参数为准的,没有-l参数才使用远程主机的当前用户名,所谓当前用户名是考虑了su出来的用户。其次,$HOME也是先以-l参数为准。第三,$HOME/.rhosts文件中的用户名不是针对-l参数来的,而是针对远程主机的当前用户名来的,但是对于这个远程主机的当前用户名,并不要求出现在/etc/passwd文件中。这第6条尤其重要,许多不成功的$HOME/.rhost就是因为对第6条的不了解。

7. $HOME/.rhosts文件的权限问题,chmod 0都没有影响,不过当时是处理root用户。对于一般用户,一定要保证.rhosts文件对于$HOME的属主是可读的。一般来说,这个文件最好chmod 400。对于root,如果不希望某个用户建立自己的.rhosts或者想替该用户建立.rhosts后不允许该用户自己修改,可以通过chown root .rhosts然后chmod 444 .rhosts实现。除了root,如果$HOME/.rhosts文件的属主和$HOME的属主不一致,检查将失败。

8. $HOME/.rhosts文件中每行只跟一个用户名,若想多个指定,只好分多行指定用户名。

9. sco unix下$HOME/.rhosts中若用+代表主机,与其他Unix系统不同,这里的+没有任何特殊的意义,所以检查将失败。但是用户名仍然可以用+代表。并且sco unix下若root的.rhosts文件go+w,则检查失败。

10. 建议man rhosts看看,各个系统有许多细微的差别。



作者: suncon    时间: 2003-11-30 01:02
标题: linux系统管理
目录结构

Linux的目录结构比DOS复杂多乐,让我们来看看它的目录里有些什么东西吧.
/bin (binary)
这个目录包含着所有的标准命令和应用程序.

/boot
这里存放给lilo使用的一些文件.

/dev (device)
这个目录包含着与终端和外设的文件接口,在Linux下,文件和设备是用同种方法访问
的.系统上的每个设备都应该在这里有一个对应的设备文件.
考察一下这个宏:
#define putchar(ch) fputc(ch,stdout)
其中fputs就是把ch输出到stdout去乐,这里的stdout就是被当成乐文件.

/etc (etcetera)
这个目录包含着系统设置文件和其他的系统文件,它在Linux下极为重要,让我们看看
它的子目录装些什么:

/etc/DIR_COLORS
  设定在用 ls 时,各种不同档案型态所用的颜色,但是不能用pipe 再导向输出,
否则就没有各种颜色乐. 由档案的内容可以很轻易的了解,如 default 的
directory 是蓝色,具有可执行档权限的是绿色,而压缩档是红色...... 这些都可
依个人喜好来加以更改. 这个档案内容写得很清楚,想必大家一眼也就可以看得出来
,在颜色的组成方面,我们常用 RGB 三原色的成份值来组合出各种不同的颜色. 由
R,G,B 这个bit 是 0 或是 1 三个值组合出颜色这个道理虽浅显,但假如我们更了解
R,G,B 的加权值分别是 1,2,4 的话,那就再也不用翻书查颜色乐...... 选择自
己的调色盘来取代预设的调色盘,是经常会做的事.


/etc/HOSTNAME
  设定用户的节点名.记录完整的hostname与domain name,这个档案在须要hostname
的场合会用得到,如 /etc/rc.d/rc.M 等......

/etc/NETWORKING
  里面只有一行YES,表明网络是存在的,没有任何作用.

/etc/X11
  link 到 /var/X11/lib/X11

/etc/aliases
  这个文件是给sendmail的使用设置别名.

/etc/at.deny
  在这个档案中可记载那些人不能使用at这个命令来做一些later job,假如at.deny
是空的,而且 at.allow 也不存在的话. 那就是每个人都可以用 at 这个命令.
(at命令是让系统在特定的时间执行某个作业,会乐这个指令,可以在工作的执行上会
更有弹性)

/etc/at.allow
  相对於at.deny,这个档案记载那些人可以使用at.而关於at.deny与at.allow,at会
先去找at.allow,假如存在而且有记录一些人的话,那就只有这些人能使用at这个
指令,但假如at.allow并不存在的话,那at就会去找at.deny,没有在at.deny中的人
都可以使用at这个指令乐! 特别要说明的是,at的执行时间也许会不如你所预期的,比
如说明明一个档你叫它在 7:02 执行,但它却会等到 7:05 才执行,这是因为 crond
是每五分钟才去看看 at 的 queue 中是否有要执行的 job. 当然,你也可以改成每
分钟都去 check,但这样似乎没有很大的意义,除非你对时间的准确度要求的很严格
,否则应该没有必要去动才是. 大家可去看看 /var/spool/cron/crontabs/root 中
就有详细记载,每五分钟 run 一次 atrun,所以 at 命令的执行可看成以每五分钟
为一单位.

  /var/spool/atjobs: 当你使用 at 来安排一件工作时,系统会把你目前的环境变
数及所要用 at 执行的工作抄一份到这个目录下的档案中.

  /var/spool/atspool:使用 at 命令之後所得到的一些讯息,会被记录在这里.可
能是 at 所要执行的命令传回的错误讯息,或传回执行成功的讯息.

/etc/bootptab
  这是用来设置无盘工作站的远端守护进程/user/net/in.bootpd的.用户不用设置.


/etc/csh.cshrc

/etc/csh.login

  这两个档案应该很熟悉罗!它就是大家常见到的.cshrc及.login,不过大家通常只注
意到自己的home directory有这两个档,但/etc下也有这两个档,不过/etc下的这两个
档绝大部份的情况下都是由 system administrator 在 maintain(维护),一般user不
应该有权力去改. 顺便一提的是,系统会先去找 /etc 下这两个档,接着才加上自己
home directory中那两个档的设定.当然,有乐.login也有.logout,.logout中可以写
一些 message,或执行一些命令,当你下达 logout 之後,.logout 就会被执行.

/etc/devinfo
  用来给makedev这个程序设定各种不同的设备驱动文件的格式.用户不用设置.
makedev是在/dev目录下创建设备文件的程序.

/etc/diphosts
  用来设置拨号服务器的用户名和密码.

/etc/disktab(disk parameter table)
  假如你在刚开机有 pass 磁碟机的一些参数给 kernel 的话(通常是你的硬碟比较奇
怪,需要 pass cylinders,heads,sectors 给 kernel 才抓的到,或者是 SCSI 的硬
碟有时有时也要用到一些参数 ) 那这些参数就会被记录在这里.

/etc/exports
  这个档案记录着你要给别人mount的档案系统,这就是典型NFS系统所存在的档案
,TCP/IP for OS/2 若要使用 network file system 而要把自己的 filesystem 让
别人 mount 的话,这个档案也是不可或缺的.

/etc/fastboot
  这个档案是使用 shutdown -f 所产生的,-f means fastboot.在重新 reboot
之後,系统会去检查这个档是否存在,以决定是否要 run fsck.

/etc/fdprm(floppy disk parameter table)
  设定格式化软盘的参数,一般情况下是不须要更动的,除非你有很奇怪格式的软碟,
或者你想做出不符合一 般格式的磁碟片.

/etc/fstab(file system table)
  记录开机要 mount 上来的 filesystem,这个档案相当重要! 大家可以在
/etc/rc.d/rc.S 中找到 /sbin/mount -avt nonfs 这一列,当执行到这一列时,
mount 就依据 /etc/fstab 中的记载,自动的将档案系统mount上来.假如你一开机
就想自动mount一些 filesystems,而不要等到开机後再以手动 mount 的话那把这些
filesystems 及相关资讯写在这个档.在档案格式方面,每一列有六个栏位,不过後
面两个栏位常被省略所以我们只看到有四个栏位.其它的两栏分别为dump-freq及
pass-number.dump-freq 预设值为 0&#59;而pass-number是 fsck 所会参考到的地方,数
字可为 0,1,2...... 1 表示这个 filesystem 将首先被 fsck check,2 表其次,
馀类推......
  如我们的服务器:
  # Device    Mountpoint   FStype Options     Dump  Pass#
  /dev/wd0s1b   none      swap  sw       0    0
  /dev/wd0s1a   /        ufs   rw       1    1
  /dev/wd0s1h   /home      ufs   rw,async        2   2
  /dev/wd0s1g   /tmp      ufs   rw,async        2   2
  /dev/wd0s1f   /usr      ufs   rw,async        2   2
  /dev/wd0s1e   /var      ufs   rw,async        2   2
  proc      /proc      procfs rw       0    0
  /dev/wcd0c   /cdrom     cd9660 ro,noauto    0    0

/etc/ftpacces
  设定ftp服务器的一些配置,包括匿名服务器的设置.

/etc/ftpconversions
  设定在ftp时使用的过滤器的位置.例如get dirname.tar就可以将ftp服务器上
的目录先tar再传回来,这个文件就是设定这些打包或压缩程序的目录和参数的.

/etc/ftpusers
  这个档案记录那些人不可以 ftp 签入系统,预设值有 root,uucp,news.这些都是为
乐security方面的考虑,你可以在这里加入不可 ftp 进来的 user id.

/etc/gateways
  顾名思义,这个档案记录一些 gateways 的 information.
  这个档案的格式如下:
net|host name1 gateway name2 metric value passive|active|external
当 routed 启动时,它会去读 /etc/gateways 这个档. 若一个 gateway并不做
routing information 交换的话,那它就会被标示成 passive,假如有做routing
information 的交换 ( 这台机器上有 run routed ),那就会标示成 active net 或
host 这个关键字是指出 route 是到网路或是到一台特定的机器上. name1 就是目
地网路或目地机器的名字.这个名字可用 /etc/hosts 或是 /etc/networks 中的
symbolic host name. name2 就是讯息将被送往之gateway的name或IP address.

/etc/gettydefs
  getty_ps的定义文件.

/etc/group
  如同 /etc/passwd 列出乐系统中所有的使用者名字,/etc/group 定义系统中所
有的 group name 与相关讯息. 格式为:
  group_name:passwd:GID:user_list
如:wheel:*:0:root,hua,yzr,cyt
上面的例子表示root,hua,yzr,cyt都是属於wheel这个 group.通常 passwd 那栏是空
白的,表示不用密码.或放一个*号.
  这个档案只能为 superuser 所读写,一个 superuser 可使用 groupadd,
groupdel,groupmod 来管理 /etc/group 这个档,要手动管理也是可以.下面是这三个
指令的用法 :

  groupadd [ -g gid [ -o ] ] group_name

  groupdel group_name

  groupmod [ -g gid [ -o ] ] [ -n new_group_name ] group_name


/etc/hostid
  系统独有的一个硬件id,许多商业程序利用这个来做license的管理,在其他工作站
上这个参数是无法更改的,只有linux可以?*** ostid这个参数来更改.

/etc/hosts
  这个档案记录着 IP address 至hostname的mapping.如我们想把 202.38.248.1 取
个别名叫:bbs.那我们就可以在这个档案里写如下的叙述 :
  202.38.248.1    bbs
如此一来,以後我们 telnet bbs 就等於 telnet 202.38.248.1.在这个档案中,至
少会有两列,一列为 loopback,这是为乐侦错目的而设的,另一列为 local host,就是
你自己的机器.

/etc/host.conf
  这个文件会说明用户的系统会如何查询节点名,它应该包括至少以下两行:
  order hosts,bind
  multi on
这两行通知先检查/etc/hosts文件,然后去查DNS,而且可以使用多个DNS.

/etc/host.equiv
  在里面可以设定一些 remote machine,而从这些 remote machine 利用 rsh 或
rlogin 连回 local machine 的话便不用输入密码..rhosts的作用也是类似的.不过
这东西最好不要乱设,以信得过的hosts为主,才不会造成security上的困扰.

/etc/host.deny
  设定那些 remote hosts 不可以使用 inetd.

/etc/host.allow
  设定那些remote hosts可以使用inetd.如ALL:202.38.248.就是202.38.248.上
的所有机器都可以用乐.

/etc/host.lpd
  记录可 access printer 的 hosts.假如一台 printer可被网路上的许多台主机
所共用,那 printcap 这个档案必须得描述完整的网路设定资讯. 在比较严密控制
的情况下,有两个条件必须符合首先,local machine 必须在 remote machine 的
/etc/hosts.eqiuv 中,或者,在 remote machine 的 /etc/hosts.lpd 中被记载第
二,使用者必须有 remote machine 的帐号.

/etc/inetd.conf
  设定系统的网络守护进程inetd的配置,格式如下:
  service_name sock_type proto flags user server_path  args
  服务名称   包类型   协议  参数  用户 服务器路径  参数
例如:
ftp   stream tcp nowait root  /usr/local/libexec/ftpd ftpd -a
telnet stream tcp nowait root  /usr/libexec/telnetd  telnetd
#shell stream tcp nowait root  /usr/libexec/rshd    rshd
#login stream tcp nowait root  /usr/libexec/rlogind  rlogind
#finger stream tcp nowait nobody /usr/libexec/fingerd  fingerd -s
#exec  stream tcp nowait root  /usr/libexec/rexecd   rexecd
#uucpd stream tcp nowait root  /usr/libexec/uucpd   uucpd
#nntp  stream tcp nowait usenet /usr/libexec/nntpd   nntpd
#comsat dgram  udp wait  root  /usr/libexec/comsat   comsat
#ntalk dgram  udp wait  root  /usr/libexec/ntalkd   ntalkd
#tftp  dgram  udp wait  nobody /usr/libexec/tftpd   tftpd /tftpboot
#bootps dgram  udp wait  root  /usr/libexec/bootpd   bootpd

/etc/inetd.pid(inetd process id)
  inetd这个进程的进程id.

/etc/inittab
  设定系统启动时init进程将把系统设置成什么样的runlevel,用户不需要设置.

/etc/issue
  这个档案被记录着 login prompt 前所要 echo 的 message,特别要注意的是
/etc/rc.d/rc.S下面的四行若没有mark,则每次开机 issue 及 motd 都会被重建.

/etc/klogd.pid(klogd process id)

  !!!!!!

/etc/ld.so.cache
  查找系统动态链接共享库的缓存,如果损坏用ldconfig可以重新产生.

/etc/ld.so.conf
  系统动态链接共享库的路径,记录一些 library 所在的目录,应用程序从这个文件
去查找相应的lib文件.例如:
  /usr/local/lib
  /usr/X11R6/lib
  /usr/i486-linuxaout/lib
  /usr/openwin/lib

/etc/lilo.conf
  配置多重启动程序lilo的配置文件,每次更改之后一定要重新运行lilo才有效.

/etc/login.defs
  这是所有用户登陆时的缺省配置文件,这个文件中有大量的定义,许多原先在profile
和login文件中的定义都挪到这里乐.如用户缺省路径,登陆时间限制,最多错误登陆次
数等.是系统管理员应该经常修改的地方.

/etc/magic
  这个档案记载乐许多档案格式的识别字串或方法.那这个档在那里会用的到呢?用在
file 这个指令上.file 这个指令的命令格式为:
  file [ -c ] [ -z ] [ -L ] [ -f namefile ] [ -m magicfile ] file
file 这个指令可以告诉你某一个档案的格式,如它是一个 text 档,或是一个
shell script 或 DOS 可执行档等...... 而 file这个指令,就是去参考/etc/magic
这个资料库.假如你知道某一档案的识别字,而原来 magic 这个资料库没有记录,那
你可以把识别方法加到资料库中,或乾脆建立自己的资料库算乐.

/etc/mail.rc&#59;/etc/mailcap&#59;/etc/sendmail.cf&#59;/etc/sendmail.st
  这几个文件都是为了设置sendmail的.

/etc/makedev.cfg
  同devinfo一样是给makedev使用的设置文件.用户不必设置.

/etc/motd(message of the day)
  在这个档里面可以写一些 message ,而这些 message 会在 login shell 之前被显
示出来.通常都是 system administrator 要告知 user 的一些讯息. 而关於每次都
会改变的问题,在前面/etc/issue时已提出过,记得 mark 起来就是乐.

/etc/mtab
  记录目前mount的filesystem.大家可以用mount指令来看这个档的变化的.每mount
一个filesystem,在这个文件就可以立刻反映出来乐.也就是说,这个文件是动态更新
的,可以参见/proc/mounts这个文件.

/etc/mtools
  这里面记录的是给 /usr/bin/mtools 参考用的 parameter.mtools就是一群操作
MSDOS档案的命令集合,可用的命令如下:
  mattrib - change MSDOS file attribute flags
  mcd - change MSDOS directory
  mcopy - copy MSDOS files to/from Unix
  mdel - delete an MSDOS file
  mdir - display an MSDOS directory
  mformat - add an MSDOS filesystem to a low-level formatted diskette
  mlabel - make an MSDOS volume label
  mmd - make an MSDOS subdirectory
  mrd - remove an MSDOS subdirectory
  mread - low level read (copy) an MSDOS file to Unix
  mren - rename an existing MSDOS file
  mtype - display contents of an MSDOS file
  mwrite - low level write (copy) a Unix file to MSDOS
这些都被 link 到 mtools.

/etc/named.boot
  假如你要建立 name server 的话,那这个档就是你要修改的地方详细的情况可以
去看 named 的 manual.

/etc/named.pid(named process id)
   本机上运行DNS的进程id.

/etc/networks
  这个档与 hosts 有点像,都是在 boot 的时候会用到的东西,在这里可以定义一
个子网路与其 IP address 的资讯.

/etc/NNTP_INEWS_DOMAIN
  设置新闻服务器的配置文件.

/etc/nntpserver
  设置用户使用的新闻服务器的地址.
  这个档案记录着 news server,当我们使用 tin -r (read news remotely) 时,
这个档案会被参考到,或者若这个档案不存在的话,那环境变数 NNTPSERVER 所指定
的 server 就会被当成要去取得 news 的 server. 譬如说,你要将 202.38.248.1
当成 news server,那 /etc/nntpserver 中就可写: 202.38.248.1

/etc/nologin
  你也许会感到奇怪,我的 /etc 这个 directory 下并没有这个档啊?没错,它平常是
不存在的,通常会看到这个档的话,那表示系统大概要 shutdown 乐,因为系统要
shutdown 乐,自然不希望有人又login 进来,所以在我们执行 shutdown时,nologin
这个档会自动的被 create,里面放着 shutdown message.实际上,当我们在login 时,
系统会去检查有没有这个档,假如有的话,那就会印出这个档案中的 message,然後不
让你 login.nologin 也有可能是为乐某种理由被制造的,比如说系统在 maintain
暂时不希望有人 login.无论如何 nologin 若存在,就不能 login.

/etc/organization
  存放用户的名字和组织,没什么用.

/etc/passwd
  呵呵,这个档案可重要乐.一个 system administrator 最初要学的常常就是这个
档案的内容! 这个档案记录着系统可以认得的user,也包括一些非人的 login name,
但这是有特殊用途的. 档案内容每列的格式如下:
  Login Name:Encrypted Password:UID:GID:GCOS:Home Directoryogin Shell

(1)login name
   在 login name 方面,每个 login name 必须是唯一的,而且不能超过 8 个字符,
  一般说来,login name 虽然可以大小写混合,但平常的情况下都用小写.

(2)Encrypted Password
   这栏是编码过的密码,在新增一个 new user 时,应该在这栏填上*,更改 password
  可用 passwd 这个指令. passwd 这是一个 setuid 的指令.

(3)UID(user id)
   每个人都要不一样,习惯上,100 以前被保留做为特殊的 user id,而root总是0.

(4)GID(group id)
   在比较早期的系统,一个user同时只能在一个group,不过现在就没有这种限制乐.

(5)GCOS
   这栏基本上没有特殊格式限制,在这里可以写上你的 full name家中电话,住址等.
  爱写什么就写什么.
   finger 这个指令会去读这地方的资讯.用chfn 可改变这栏.

(6)Home Directory
   这栏没什么,就是记录 user 的 home directory 而已,利用 cd 或 cd~ 都可回到
  home directory.

(7)Login Shell
   设定使用者所使用的 shell,预设值是 /bin/bash.当然,你也可以自己改成 csh
  或 tcsh,zsh 也是不错,假如有 free 版的 korn Shell 也可拿来用用.用 chsh可改
  变你的 login shell.
   为乐 security 方面的考虑,可以安装 shadow,将 passwd 这个档完全的与一般
  user 隔绝开来,连读也没有办法读 passwd 这个档.


/etc/pnpdevices
  列出乐支持的plugplay设备.


/etc/profile
  profile 这个档是 bash 这个 shell 所用的,profile 之于bash就好像 cshrc 之于
csh. 同样的,/etc 下的 profile 也是 SA 在维护的,主要是放着全域的设定(Global
Setting)而每个 user 在自己的 Home Directory 都可以有各人的.profile.


/etc/protocols

作者: suncon    时间: 2003-11-30 01:06
标题: linux系统管理
假如你为乐某些目地,而写乐自己的 protocol,那你就必须把它列在这个档案中,这
样 inetd 才会管理一些 daemons 去用它这个档案每列的格式如下,# 之後的是注解:
  Protolcol Name   Portocol Number    Aliases

  协议名       代码         别名

ip   0    IP   # internet protocol,pseudo protocol number
icmp  1    ICMP  # internet control message protocol
igmp  2    IGMP  # internet group multicast protocol
ggp   3    GGP   # gateway-gateway protocol
tcp   6    TCP   # transmission control protocol
pup   12   PUP   # PARC universal packet protocol
udp   17   UDP   # user datagram protocol
idp   22   IDP   # WhatsThis?
raw   255   RAW   # RAW IP interface


/etc/psdatabase
  这个档案是被 psupdate 所用到,psupdate 主要的功能就是更新
/etc/psdatabase 这个档,以符合目前的 kernel image system map file.一般的预设
档是 /usr/src/linux/tools/zsystem.


/etc/resolv.conf
  这里面记载着你机器的 domain name 及 name server 的 IP address,name server
可以自己加入.name server 可不要随便就去掉,否则,就会地址没有办法被解译,故会
有 Host name lookup failure 的信息.


/etc/rpc
  !!!!!!!!!


/etc/securetty
  假如你要以 root login 的话,实际上是有限制的,这个档案就列出乐 root 可以
login 的 ttys,假如你把每一列都 mark 起来那就没有任何一个 terminal 可供root
login 乐,就会出现以下的情况 :
        login: root
        root login refused on this terminal.
仔细的在这个档案列出可用的 terminal,可使从 modem 连的使用者或经由网络来的
其它的使用者比较不容易取得 superuser 的权力.


/etc/services
  设定系统的端口与协议类型和提供的服务.


/etc/shadow
  这个文件对一般用户是不可读的,加密后的密码就放在这个文件中.


/etc/shells
  这个档案里面就记录着可以用的 login shell.还有一点,那就是这个档的记录会在
使用 chsh 时做为参考,唯有被列在这里的 shell,使用 chsh 时才会出现这些 shell
可选.实际上如果强行直接修改passwd文件,也可以使用不在列表中的shell程序,但会
造成在ftp的时候,无法登陆.


/etc/slip.hosts&#59;/etc/slip.login
  这两个文件是设定SLIP的配置文件.


/etc/snooptab
  如果系统管理员用ttysnoops替换乐login这个程序,就可以用snooptty这个程序来
监控用户的屏幕,这个文件就是能监听的终端列表.


/etc/sudoers

  在一个不是很复杂的系统中,也许一个 system Administrator 就可以管理所有的
事情.但一但系统提供的服务变多,系统管理的工作也随之变得沉重,这时候,sudo 就
派上用场乐,sudo 可以让一个普通的 user 变成 superuser,这样一来,一个系统的某
些工作,就可以分配给这些 superusers 来做.以减轻负担.
  当然,并不是每个 user 都可以变成 superuser.所以/etc/sudoers 就是记录着那
些人可以用 superuser 的身份来执行一些工作.
  这个档案有一个专属的 editor 叫 visudo 可来编辑 /etc/sudoer.而关於使用
sudo.bin有一个记录档,在 /var/adm/sudo.log,里面记录着谁在什么时候利用sudo
下乐那些指令.顺便一提的是:利用下面这个命令可抓出那些人转换成 superuser 但
却没有成功:grep FAILED SU /var/adm/messages

/etc/syslog.conf
  系统记录程序syslogd的配置文件,格式如下:
  *.=info&#59;*.=notice  /usr/adm/messages
  *.=debug       /usr/adm/debug
  *.=warn       /usr/adm/syslog
即所有的info和notice信息都存在/usr/adm/messages下,debug信息在/usr/adm/debug
下,警告信息在/usr/adm/syslog下.


/etc/ttys
  设定系统的终端类型.


/etc/utmp
  从 utmp 中可以知道现在有谁正在用系统.当使用者logout之後,init就去把logout
的使用者从 /etc/utmp 中去掉.实际上,utmp 每个 record 是像这样的一个结构:

      struct utmp {
        short ut_type&#59;       /* 登陆类型 */
        pid_t ut_pid&#59;        /* 进程id */
        char ut_line[12]&#59;      /* 使用终端 */
        char ut_id[2]&#59;       /* 初始化id */
        time_t ut_time&#59;       /* 登陆时间 */
        char ut_user[8]&#59;      /* 用户名 */
        char ut_host[16]&#59;      /* 远程登陆机器名 */
        long ut_addr&#59;        /* 远程登陆机器的ip */
       }&#59;
  了解这个档案,进而去修改,可以做出许多有趣的事......

/etc/wtmp
  简而言之,wtmp 是一个 login data base,有许多的指令会用到这个档,像 last,
sessreg,who 等......这个档案格式与 utmp 大致相同,只是多乐shutdown及reboot
这个记录,指出系统的 shutdown 或 reboot,及一个空的 user name指出在相关
terminal 的 logout.还有,不像 /etc/utmp,/etc/wtmp 的记录是慢慢的附加上去的,
也就是说,这个档案会越变越大,虽然变大的速度并不会太快,但一但到乐某种程度大小
的话,system Administrator 可以隔一段时间就删除这个文件,再用touch来产生.下面
是用 last 这个指令所得到的部份内容:

  bbs    tty1             Tue Nov 29 19:09 - 19:09 (00:00)
  root   tty1             Tue Nov 29 19:08 - 19:09 (00:00)
  root   tty1             Tue Nov 29 19:07 - 19:07 (00:00)
  runlevel ~               Tue Nov 29 19:07
  reboot  ~               Tue Nov 29 19:07

/etc/XF86Config
  X Window的配置文件.

/etc/yp.conf
  NIS的配置文件.

/etc/zprofile
  link 到 /etc/profile

/home
存放用户主目录的地方,一般说/home/username就是用户的主目录.

/lib(library)
存放系统最基本的动态连接库.这个目录如果被删除的话就不能动乐.几乎所有的程序
都要用到这个目录下的共享库.

/lost+found
这个目录一般都是空的.但当文件系统发生故障(如系统掉电)后,在机器启动的时候有
些文件找不到应该存放的地方,就放到这个目录底下乐.这个目录是mkfs是自动产生的.

/mnt
空目录,是让用户临时挂载文件系统的地方.

/proc
是linux提供的一个虚拟系统,是由系统在系统启动的时候在内存中产生的,用户可以
直接通过访问这些文件来获得系统信息,例如/proc/kcore就是系统运行的时候内存的
映象文件.

/root
超级用户主目录.

/sbin
这个目录存放着super user使用的系统管理程序,如fsck,mount等.

/tmp(temporary)
存放不同的程序执行时产生的临时文件.这是除了/usr/local目录以外一般用户可以
使用的一个目录.这个目录在启动时系统并不自动删除,所以最好能经常删除这里的无用
文件.

/usr(user)
linux系统占地最大的一个目录,用户的很多应用程序和文件都几乎存放在这里.下面
时一些比较重要的目录:

/usr/X11R6
  存放XFree86的目录,所有于X Window有关的程序都放在这里.

/usr/bin
  用户用到的大部分程序都放在这里.


/usr/sbin
  超级用户的管理程序和系统守护程序.

/usr/doc
  放着linux的文档.

/usr/include
  在linux下开发编译应用程序需要的头文件.

/usr/lib
  存放常用的动态链接共享库和静态档案库.

/usr/local
  让用户安装新软件使用的,目录结构和/usr类似.

/usr/man
  存放着linux online help.

/usr/src
  存放着系统的源代码,缺省的有一个/usr/src/linux目录,是用来存放系统内核的源
代码.重新编译内核的时候就是在这个目录下进行的,有些应用程序也会用到这个目录
下的一些头文件.

/var
这个目录中存放着那些不断在扩充着的东西,为了保持/usr的相对稳定,那些经常被
修改的目录可以放在这个目录下.

/var/log
  系统的日志文件.


说明:在不同的linux版本,目录结构也有不少的区别...大家看乐之后尽可以补充或更改.


作者: suncon    时间: 2003-11-30 03:16
标题: linux系统管理
设置系统

设置系统名
系统名包含在/etc/HOSTNAME文件中。在网络环境中,系统名用来表示自己的计算机。你可以/etc/HOSTNAME文件来改变系统名(只有在系统重新启动后,改名才会生效),也可以使?*** ostname 命令:
   hostname hellfire
此命令把机器名设置为hellfire。


使用维护磁盘

每个系统都应有一个维护磁盘,以便用来检查根系统文件,恢复磁盘故障和解决一些简单的问题。应急(emergency )磁盘,也叫做boot/root 磁盘,是在系统的设置改变时创建的,可以用来完成以上的任务。
在使用应急磁盘启动系统后,你可以使用mount 命令挂接磁盘分区。


重新设置root 帐号口令

如果忘记了root 帐号口令,你可以使用boot/root 磁盘重新启动系统。然后挂接root 分区,编辑/etc/passwd文件,删除root 帐号下的口令,最后在从硬盘启动系统。系统启动后,你就可以设置新的口令了。
或者在本地以single模式登陆,这样就直接以root登陆系统了,用passwd修改密码以后重启就可以了


设置登录信息

如果系统上的用户多于一个,你可以使用/etc/motd 文件显示系统信息。此文件的内容在每个用户登录时都将显示
作者: suncon    时间: 2003-11-30 03:16
标题: linux系统管理
多系统安装

首先确定
如果你的计算机上没有安装任何操作系统,请首先安装 Windows,然后再安装 Red Hat Linux。可以为 Windows 创建一个指定大小的分区。在硬盘驱动器上保留足够的空闲空间(没有被分区或格式化的分区)来安装 Linux。

如果你想要安装 Red Hat Linux 的计算机上目前运行的是 Windows (或某种其它操作系统),你需要做出一项重要决定。 你的选择是:

·已安装了 Windows,但是让Red Hat Linux代替它成为唯一操作系统吗?如果答案是肯定的,你没必要配置双引导系统。把想保留的信息全部备份,然后开始安装。在安装中,如果你在「磁盘分区设置」 屏幕中选定要安装程序自动为你的系统分区,请选择「删除系统上所有分区」。如果你选择要用 Disk Druid 或 fdisk 来手工分区,删除所有现存的 DOS (Windows) 分区,然后创建你的 Linux 分区。

·你想安装 Red Hat Linux ,然后既可以引导 Red Hat Linux 又可以引导你的另一个操作系统吗?执行此类 Red Hat Linux 安装可以在你的系统上安装 Red Hat Linux 却又不影响另一个操作系统。既然你已经装有 Windows,你需要:先为Linux分配磁盘空间,然后再在双引导环境中安装 Red Hat Linux。这就是后面两节的内容。


作者: suncon    时间: 2003-11-30 03:19
标题: linux系统管理
安装Linux

当 Windows 已被安装,而且你已为 Linux 准备了空闲磁盘空间之后,你就可以启动 Red Hat Linux 安装程序了。这时候,普通的 Red Hat Linux 安装与配置双引导系统的 Red Hat Linux 安装间的区别仅存在于硬盘驱动器分区和引导装载程序配置中。
当你运行到了 「磁盘分区设置」 屏幕中时,磁盘分区安装程序中的 「磁盘分区设置」 屏幕中有几个选项。根据你的选择而定,配置双引导系统的方法也有所不同。

(如果不知道要创建多少个 Linux 分区,推荐:
·等于内存容量两倍的 /swap 分区, — /swap 分区用来支持虚拟内存。换句话说,当没有足够的内存来容纳你的系统正在处理的数据时,这些数据就被写入 /swap。你的交换分区的最小值应该相当于你的计算机内存的两倍和32MB中较大的一个值。
·75MB的 /boot 分区 — 这个挂载在 /boot 上的分区包含操作系统的内核(允许你的系统引导Red Hat Linux),以及其它几个在引导过程中使用的文件。对大多数用户来说,75MB引导分区应该是足够了。警告:不要把 /boot 分区创建为LVM类型。
·1.5到4.5 GB的 / 分区 — 这是“/”,即根目录,除了贮存在 /boot 分区上的以外所有文件都位于根分区上。个人桌面或工作站需要硬盘空间为1.5 GB,安装全部软件需要4.5 GB。)

如果你选择:

·自动分区 — 选择「保留所有分区,使用现有空闲空间」。这一选项将会在你的硬盘驱动器上保留你的 Windows 分区,而使用空闲空间或附加硬盘驱动器为 Red Hat Linux分区。

·使用 Disk Druid 来手工分区 — 不要删除现存 Windows 分区(它们是类型为 vfat 的分区)。在附加硬盘驱动器上,或你为 Red Hat Linux保留的空闲空间上创建 Linux 分区。

·使用 fdisk 来手工分区 — 与使用 Disk Druid 相似,只是你将看不到图形化界面。基本步骤是相同的。不要删除类型为 FAT16、 FAT32、或 NTFS 的现存分区。在附加硬盘驱动器上,或你为 Red Hat Linux 保留的空闲空间上创建 Linux 分区。

配置引导装载程序当你在 Red Hat Linux 安装中运行到了 「安装引导装载程序」 这一屏幕时,选择要安装的引导装载程序。你可以使用不同的引导装载程序来引导 Red Hat Linux 和 Windows。 Red Hat 不支持其它引导装载程序,因此,本章节将只讨论如何配置 GRUB 或 LILO 来引导这两个操作系统。

Red Hat Linux 安装程序通常会检测到 Windows 并自动配置引导装载程序(GRUB 或 LILO)来引导 Red Hat Linux 或 Windows。这可以在安装程序中的引导装载程序屏幕中看到。 一个名为「DOS」的项目会出现在要引导的操作系统列表中。

安装后安装之后,无论你在什么时候启动计算机,你都能够在引导装载程序屏幕中指明你想启动的是Red Hat Linux还是另外的操作系统。 选择「Red Hat Linux」来引导 Red Hat Linux,选择「DOS」来引导 Windows。

如果你没有把硬盘驱动器中全部空闲空间拨给Red Hat Linux,你可以在安装Red Hat Linux之后把它拨给Windows。最好使用fdisk来创建这些分区。其它分区软件会改变硬盘驱动器上的分区表,并移动Linux分区。


作者: suncon    时间: 2003-11-30 03:20
标题: linux系统管理
进一步:NTloader引导双系统

??前面的文章就是NT和Linux共存的最简单的方法。也即在安装linux的lilo时,选择将lilo安装在LInux主分区的引导区中。然后使用win98的启动盘重新启动以后,运行fdisk将linux主分区设置为active,这样就可以实现在系统启动时首先进入lilo选择,若不选择linux,则进入NT loader。
??但是有时候为了方便而需要使用NT loader 来引导linux,下面就是实现的方法。

??你应该牢牢记住的最重要的一点是,许多软件产品会利用硬盘上面仅有的那个宝贵的主引导记录MBR。NT是这样,没有选择余地;Linux也可以这样,如果你喜欢。机器的BIOS会执行储存在当前激活分区的信息,来初始化你希望的操作系统。

??NT安装后,MBR会被修改成去引导一个在激活分区的根目录下,叫NTLDR的程序。原来的MBR会被存到一个叫BOOTSECT.DOS的小文件中。NT安装完成后要记住绝不能覆盖这个MBR, 否则NT将无法启动。以防万一, NT的用户需要NT的应急修复磁盘(Emergency Repair Disk,ERD)。

??记住了这些后,就要注意设定LILO时***不能***装到MBR中去,而是装到Linux的root分区中去。这样,对NT而言,不会带来问题;而Linux没有MBR也可以活下去。

??NT的引导过程

??当NTLDR启动, NT用户看到OS Loader V4.xx 后,它会切换处理器到386状态,并启动一个非常小的文件系统。接着,它会去读BOOT.INI文件,看是否有其它操作系统存在,并显示一个选择菜单。下面是一个典型的BOOT.INI:

??[boot loader]
??timeout=30
??default=multi(0)disk(0)rdisk(0)partition(2)WINNT

??[operating systems]
??multi(0)disk(0)rdisk(0)partition(2)WINNT=NT V4 is here
??multi(0)disk(0)rdisk(0)partition(2)WINNT=NT V4 VGAMODE /basevideo /sos
??C:=DOS is here
??BOOT.INI有两部分构成。 boot loader section部分指定菜单在屏幕上的停留时间,和缺省菜单选项。opearating systems section 部分指定可选的操作系统种类。可以看到机器可以启动NT(以标准模式或VGA安全模式)和DOS。从这个例子我们可以推断,DOS从硬盘C第一个硬盘的第一个分区)启动,而NT从第二个分区启动。典型安装时,会以DOS的FAT文件系统格式化一个C:的分区,然后将NT装在另外一个NTFS(NT文件系统)的分区。

??如果用户选择了启动NT, 另外一个程序NTDETECT.COM,就会开始进行硬件检查。如果一切正常,NT内核就会被装入,正如我们都知道的那样。

??再来看如果启动的不是NT的情形。此时,NTLDR 需要知道非NT OS引导所必需的引导扇区是哪个。此时,相应的引导扇区映象必须要在一个小小的512字节的文件中。比如,要引导DOS,NTLDR 将会寻找一个叫BOOTSECT.DOS的引导扇区映象文件。 这个映象文件是NT的安装程序产生的。

??那么, 引导Linux又是怎样呢?这很简单,需要的只是一个引导扇区映象文件,姑且称之为BOOTSECT.LIN (在本文稍后会看到如何得到这个文件)。 必须将BOOTSECT.LIN 放到C:, 并要修改 BOOT.INI。此时operating systems ection部分看起来应该是这样的:

??[operating systems]
??multi(0)disk(0)rdisk(0)partition(2)WINNT=NT V4 is here
??multi(0)disk(0)rdisk(0)partition(2)WINNT=NT V4 VGAMODE /basevideo /sos
??C:=DOS is here
??C:BOOTSECT.LIN=Now Linux is here
??修改BOOT.INI, 可以用任何普通ASCII文本编辑器(比如记事本)。这个文件的正常属性为系统-隐藏-只读,所以你必须用 'attrib' DOS 命令或在NT中,用文件属性对话框中来变更属性。

??现在我们将注意力转到Linux。我们需要安装Linux,定制LILO,产生BOOTSECT.LIN文件。

??第一步是装好Linux。我们都知道怎么做:为Linux选适当的系统,SWAP,和用户分区,运行安装程序,等等。一切顺利时,这一步在45分钟之内就可以完成。

??接下去就要定制LILO。我们知道怎么做,但要注意*不能* 将LILO装到MBR中去(除非你想将NT吞了:-))。设定LILO时,要选择将它装到你Linux 的root分区。如果你还不知道如何设定LILO, 就花几分钟读读HOW-TO文献,或者就用一些好的安装程序,我是用S.u.S.E.的, 因此我的安装程序就是 'yast' (Yet Another Setup Tool)。

??LILO定制好之后,(为行文方便, 此处假设Linux的root分区是/dev/hda3)我们必须用'dd'来产生引导记录映象文件。以root Login后,按以下做:

??# dd if=/dev/hda3 bs=512 count=1 of=/dosc/bootsect.lin

??如果没有能将FAT C: partition mount成为 /dosc,譬如说由于这个分区被以NTFS方式格式化,不能访问这个分区。此时可以将 BOOTSECT.LIN写到一个以DOS方式格式化的磁盘中,或者NT能读的其它什么分区也可以。如果BOOTSECT.LIN不是被放到C:,要记住此时应相应修改BOOT.INI文件。

??现在可以从NT Loader菜单中选择Linux了。NTLDR将会装载BOOTSECT.INI,就可以看到LILO的提示。
最后,你可以设定LILO在选择提示时能去引导Linux和C: 上的DOS。就可以再次回到C: 分区上的NT Loader。前文描述的方法可以反复进行,如果你希望能选择引导多个Linux,就必须为每一个Linux都产生一个相应的引导扇区映象文件。


作者: suncon    时间: 2003-11-30 03:20
标题: linux系统管理
IDE RAID卡

          IDE RAID卡在linux上的应用
raid卡几乎已经成为服务器的标准配置了,raid卡不但可以大大提高数据的安全,还可以大幅提高硬盘读写性能,从而提供服务器的整体性能和可靠性.linux很早就提供对raid的支持,不但支持raid卡,也支持软raid,不过软raid实在是比不上硬raid.早期的raid卡都是用于scsi系统的,性能好,可惜价格 甙?而且scsi硬盘也大大贵过ide硬盘.近年来,市场上出现了ide raid卡,配合新一代的高速ide硬盘的降价,一些入门级的服务器和工作站开始考虑采用ide raid系统.

ide raid系统相对scsi raid而言,性能稍差,但价格相当低廉,实在是DIY友的利器.

ide raid卡的代表是promise fasttrak100.我就以此为例,介绍IDE RAID卡在linux上的应用.
linux的2.4.x核心开始支持ide raid卡promise fasttrak系列产品.但有少少问题,可能会导致有些型号工作不稳定,推荐使用promise公司提供的驱动.
promise提供单cpu的驱动ftrh71_120b5.zip(ftp://ftp.promise.com/Controllers/IDE/Linux/ftrh71_120b5.zip)
它提供对fasttrak100TX2/LP/100的支持,可用在redhat 6.2和redhat 7.x上.

promise提供多cpu的驱动FTv120b3RHsmp.TAR(ftp://ftp.promise.com/Controllers/IDE/Linux/FTv120b3RHsmp.TAR)它提供对fasttrak100TX2/66/100的支持,可用在redhat 6.2和redhat 7.0上.如果你的promise ide raid卡上的芯片是PDC20262和PDC20265,厂家建议你用redhat 7.0,因为可启动的scsi模块只支持单cpu,不支持smp.

我用单cpu的驱动来介绍安装.
你需要两张空白的,用dos格式化的软盘.解压文件ftrh71_120b5.zip后,可以看到几个文件.看到disk1.img和disk2.zip了吧.
可在dos下用rawrite.exe工具来把disk1.img写进disk1软盘中.

linux用户就更好办:
   dd if=disk.img of=/dev/fd0
要注意先不要把软盘mount上.

接下来,解压disk2.zip,把生成的文件拷贝到disk2软盘中.如果你有一个安装好的linux系统,想把fasttrak的驱动加进系统,从disk2软盘上找到scsi_mod.o和ft.o两个模块.
   insmod scsi_mod.o
   insmod ft.o
用lsmod检查一下是不是加载成功.
如果你想在新的ide raid系统上安装新的linux系统的话,就要麻烦一点.首先在ide raid卡的cmos中选择raid方式和其它设置,如块的大小等.把disk1软盘插进软驱,开始安装.disk1软盘包含了redhat的启动部分,可以当作redhat 7.x的安装启动软盘.

正常安装系统
当系统安装接近完毕,显示Congratulations的时候按Ctrl+Alt+F2进入命令行模式更换disk2软盘

chroot /mnt/sysimage
mount -t vfat /dev/fd0 /mnt/floppy
cd /mnt/floppy
./setup-ft

完成后按Ctrl+Alt+F1,会到正常安装模式,继续进行完成安装.大功告成!

作者: suncon    时间: 2003-11-30 03:21
标题: linux系统管理
Gtk+/Win32中文显示方案

Gtk+在UNIX平台下中文显示很正常,但同样的程序在GTK+/WIN32下汉字无法显示,原因为传入GTK+的字符串不能为GB2312码,必须全部为UTF-8码,否则无法正常显示。而UTF-8码在WINDOWS上无法正常输入,必须通过转换程序。
libiconv就可以实现这样的功能,从网上下载编译后,可以生成iconv.exe,执行 iconv -f EUC-CN -t UTF-8 srcfile desfile
就可以将文件中的GB码转化为UTF-8码。
如果需要在程序中自动转换,则必须调用libiconv系列函数。同时GTK+中必须使用中文字体,才能正确显示中文。例程如下:
#include locale.h
#include gtk/gtk.h
static char *gtkrc_string = \
   style \default\\
   {\
       fontset = \-unknown-榛戜綋-normal-r-normal-*-*-140-*-*-p-*-
gb2312.1980-0\\
   }\
   class \GtkWidget\ style \default\&#59;
/* This is a callback function. The data arguments are ignored
* in this example. More on callbacks below. */
void hello( GtkWidget *widget,
     gpointer  data )
{
g_print (Hello World\n)&#59;
}
gint delete_event( GtkWidget *widget,
         GdkEvent *event,
  gpointer  data )
{
/* If you return FALSE in the delete_event signal handler,
  * GTK will emit the destroy signal. Returning TRUE means
  * you don't want the window to be destroyed.
  * This is useful for popping up 'are you sure you want to quit?'
  * type dialogs. */
g_print (delete event occurred\n)&#59;
/* Change TRUE to FALSE and the main window will be destroyed with
  * a delete_event. */
return(TRUE)&#59;
}
/* Another callback */
void destroy( GtkWidget *widget,
      gpointer  data )
{
gtk_main_quit()&#59;
}
int main( int  argc,
    char *argv[] )
{
/* GtkWidget is the storage type for widgets */
GtkWidget *window&#59;
GtkWidget *button&#59;
/* This is called in all GTK applications. Arguments are parsed
  * from the command line and are returned to the application. */
gtk_set_locale()&#59;
gtk_init(argc, &argv);
gtk_rc_parse_string(gtkrc_string)&#59;
/* create a new window */
window = gtk_window_new (GTK_WINDOW_TOPLEVEL)&#59;
/* When the window is given the delete_event signal (this is given
  * by the window manager, usually by the close option, or on the
  * titlebar), we ask it to call the delete_event () function
  * as defined above. The data passed to the callback
  * function is NULL and is ignored in the callback function. */
gtk_signal_connect (GTK_OBJECT (window), delete_event,
GTK_SIGNAL_FUNC (delete_event), NULL)&#59;
/* Here we connect the destroy event to a signal handler.
  * This event occurs when we call gtk_widget_destroy() on the window,
  * or if we return FALSE in the delete_event callback. */
gtk_signal_connect (GTK_OBJECT (window), destroy,
GTK_SIGNAL_FUNC (destroy), NULL)&#59;
/* Sets the border width of the window. */
gtk_container_set_border_width (GTK_CONTAINER (window), 10)&#59;
/* Creates a new button with the label Hello World. */
button = gtk_button_new_with_label (浣犲ソ锛屼笘鐣岋紒 Hello World!)&#59;
/* When the button receives the clicked signal, it will call the
  * function hello() passing it NULL as its argument. The hello()
  * function is defined above. */
gtk_signal_connect (GTK_OBJECT (button), clicked,
GTK_SIGNAL_FUNC (hello), NULL)&#59;
/* This will cause the window to be destroyed by calling
  * gtk_widget_destroy(window) when clicked. Again, the destroy
  * signal could come from here, or the window manager. */
gtk_signal_connect_object (GTK_OBJECT (button), clicked,
    GTK_SIGNAL_FUNC (gtk_widget_destroy),

    GTK_OBJECT (window))&#59;
/* This packs the button into the window (a gtk container). */
gtk_container_add (GTK_CONTAINER (window), button)&#59;
/* The final step is to display this newly created widget. */
gtk_widget_show (button)&#59;
/* and the window */
gtk_widget_show (window)&#59;
/* All GTK applications must have a gtk_main(). Control ends here
  * and waits for an event to occur (like a key press or
  * mouse event). */
gtk_main ()&#59;
return(0)&#59;
}
/* example-end */


[
作者: suncon    时间: 2003-11-30 03:25
标题: linux系统管理
用蓝点rpm包进行汉化

  如果你的显卡在XFree86 3.3.6上运行良好,而你有不打算在汉化上自找麻烦的话,直接用bluepoint linux的rpm包来进行汉化,用不了几分钟.
三、bluepoint汉化

  如果你的显卡在XFree86 3.3.6上运行良好,而你有不打算在汉化上自找麻烦的话,直接用bluepoint linux的rpm包来进行汉化,用不了几分钟.

  本方法只可用于redhat 6.2,redhat 7.0以及mandrake 7.0等版本得汉化,但遗憾得是,目前只支持xfree86 3.3.6,xfree86 3.3.6不支持得显卡只能寻求它法了.

  1、选择显卡驱动(如XF86_SVGA,视你的显卡而定)

  下载下列rpm软件包(可从http://www.linuxaid.com.cn/engineer/hubertzou或http://www.bluepoint.com.cn下载).

  1)XFree86-SVGA-3.3.6-6BP.i386.rpm

  2)XFree86-zhfont-3.3.5-1.i386.rpm

  3)bluepoint-release-1.0-1BP.noarch.rpm

  4)cxwin-tools-1.0-4BP.i386.rpm

rpm -Uhv XFree86-SVGA-3.3.6-6BP.i386.rpm
rpm -Uhv XFree86-zhfont-3.3.5-1.i386.rpm
rpm -Uhv bluepoint-release-1.0-1BP.noarch.rpm
rpm -Uhv cxwin-tools-1.0-4BP.i386.rpm

  2、修改/etc/X11/XF86Config如下:

#FontPath /usr/X11R6/lib/X11/fonts/TrueType
#FontPath  unix/:-1
FontPath/usr/X11R6/lib/X11/fonts/misc:unscaled
FontPath/usr/X11R6/lib/X11/fonts/75dpi:unscaled
FontPath/usr/X11R6/lib/X11/fonts/encodings:unscaled
FontPath/usr/share/zhfont/X11/
FontPath/usr/X11R6/lib/X11/fonts/misc
FontPath/usr/X11R6/lib/X11/fonts/75dpi
FontPath/usr/X11R6/lib/X11/fonts/100dpi
EndSection

  3、修改/etc/X11/ChineseConfig

Codingsystem GB2312

  4、重启动Xwindow,就可用中文输入和用netscape浏览中文网站,big5也可以正确显示.如需进一步汉化kde,最好安装bluepoint linux 2.0带得kde软件,至少要它的qt-1.44bp修改kde的字体设置,把默认code改为简体中文即可, 重启动kde后,所有的东西全是中文的,菜单,书签...,中文输入也很好用, 注意:用kde的人最好再安装bluepoint的三个blinp包:

blinp-0.1-4BP.i386.rpm
blinp-ccetab-0.1-6BP.i386.rpm
blinp-kde-0.1-1BP.i386.rpm

作者: suncon    时间: 2003-11-30 03:26
标题: linux系统管理
炎黄中文输入和Chinput的安装方法

四、炎黄中文输入
  * 适用环境:RedHat7.x,必须安装qt2和kdelibs2
  * RPM包的编译环境:
  * kernel 2.4.2
  * glibc-2.2.2-3
  * gcc(-c++)-2.96-77(RH)
  * XFree86-4.0.2-11
  * QT-2.3.0
  * KDE-2.1
  * 安装

  1)使用以下命令行:


rpm -Uvh --force rf-xim-input-2.1-2.i386.rpm


  2)然后重新登录当前用户。

  本包中自带中文点阵字体(14),并自动设置环境变量,在RH7.1(beta)下无需其它任何设置。

  * 用法:

  Ctrl+空格:进入/取消中文输入状态

  Ctrl+Shift:切换中文输入法

  在中文输入状态下,按

  Alt+1:智能拼音输入法

  Alt+2:GBK拼音输入法

  Alt+3:国标区位输入

  Alt+4:五笔字型输入法

  KDE用户可以点击桌面右下角的图标选择输入法。

  * 关于五笔输入法:

  rf-xim-input中的五笔输入法码表文件是一个文本文件,您可以任意添加自己的词组,每个词组占一行,格式请查看文件/usr/local/rfinput/lib/wbx.mb

  * 已知的问题:

  如果出现意外而使得rf-xim-input中止运行,可能使得它无法再次启动。此时请用以下方法解决:

  在控制台输入命令:

ps -A|grep rfinput

  如果有输出的话,用命令:

  kill -s SIGKILL 输出中的数字

  此时KDE2可能会报应用程序崩溃信息,确定即可。

  然后再次启动rf-xim-input,如果还无法运行,等一会再试即可重新运行。

  * 关于src.rpm:

该包可以在qt-2.2.3/qt-2.2.4/qt-2.3.0(for RedHat,qt安装在/usr/lib/qt-2.x.x下)下编译通过。如果编译程序无法找到库的头文件,请修改Makefile。

  五、Chinput的安装方法:

  下载到Chinput-3.0.1.tar.gz

pth-1.3.7-1.i386.rpm
unicon2-im.tar.gz
zh_CN

  1、首先安装pth

rpm -Uhv pth-1.3.7-1.i386.rpm

  2、接着,tar zxvf unicon2-im.tar.gz

mv unicon2 /usr/lib/

  3、编译新 locale,以 root 身份执行:localedef -f GB2312 -i zh_CN zh_CN.gb2312,若无错误提示,则编译成功,在 /usr/lib/locale 下会增加 zh_CN.gb2312 目录。

  4、确定在 /usr/lib/gconv/gconv-modules 文件中包含了 alias GB2312-1980// EUC-CN// 一行,若没有,加入它。在redhat7.1b2中已有

alias GB2312// EUC-CN//
alias csGB2312// EUC-CN//
alias CN-GB// EUC-CN//

  但我还是加上alias GB2312-1980// EUC-CN//

  5、好,我们开始安装Chinput

tar zxvf Chinput-3.0.1.tar.gz
cd Chinput-3.0.1
make
make install

  6、进入usr/lib

ln -s libstdc++-2-libc6.1-1-2.9.0.so libstdc++-libc6.1-2.so.3

  7、再修改 /usr/lib/ZWinPro/Chinput.ad 文件:

  由于 XFree86 没有自带的 BIG5 码字体,若你不需要输入 BIG5 码字符,则对 Chinput.ad 做以下调整:


...
chinput.gblocale= zh_CN.gb2312
chinput.big5locale= zh_CN.gb2312
...
chinput.gbfont = -*-*-medium-r-normal--16-*-*-*-c-*-gb2312.1980-0
chinput.big5font = -*-*-medium-r-normal--16-*-*-*-c-*-gb2312.1980-0


  注意:在 Chinput.ad 的字体定义中,不能出现空格,这是由于 Chinput 的限制。


作者: suncon    时间: 2003-11-30 03:28
标题: linux系统管理
GNOME和KDE的汉化

六、REDHAT 7.0中GNOME的汉化
  GNOME的中文显示RedHat 7.0采用glibc2.2和XFree86 4.0.1,对国际化的支持有了很大的进步。GNOME是优秀的桌面平台,也是目前Linux使用的对国际化支持最好的桌面平台之一。这里我主要讲如何实现在RedHat 7.0下面显示和输入简体中文。

  为了简单起见,仅仅讲述GB2312编码的字符集。

  因为XFree86 4.0.1对显卡的支持不如XFree86 3.3.6广泛,所以RedHat 7.0里面同时保留了XFree86 3.3.6,可以用xdpyinfo查看XFree86的版本号.方法

xdpyinfo | grep release | sed s/^.*[^[:digit:]]//

  看看结果是不是4001或者4002,如果不是,表明版本不是4.0.x

  1:升级glibc

  RedHat 7.0自带的glibc版本为2.1.92,是2.2的测试版,bug比较多。后来RedHat公司提供了glibc的升级文件。为了系统的稳定和更好的支持中文,应该将glibc升级到2.2-9版本或更高。下载地址:ftp://ftp.gnuchina.org/pub/ISO/RedHat/updates/7.0/i386

  最好将glibc,glibc-devel,glibc-profile都升级到2.2.9

  升级方法:

rpm -Uvh glibc-2.2-9.i386.rpm


  2:设置中文locale

  Linux采用locale技术以实现对多语言的支持。因此首先要设置中文locale。

  如果你使用的是bash,那么请编辑~/.bash_profile文件,加上

export LC_ALL=zh_CN
export LANG=zh_CN

  然后运行. .bash_profile或者重新登录账号以使设置生效。

  编辑~/.i18n文件,内容为:

LANG=zh_CN

  3:测试中文locale

  在控制台上运行date命令,如果你能看到乱码证明中文locale已经生效。

  此时运行startx进入GNOME桌面,你将看到任务栏上的时间已经变成中文显示了。如果你默认的不是GNOME桌面则可以运行switchdesk gnome切换到GNOME桌面。

  4:显示Windows下的中文文件名

  如果你还装了中文Windows 95/98/Me,那么现在就可以显示中文文件名了。RedHat 7.0采用2.2.16的内核,可以支持简体中文代码页。使用方法:在mount后加选项-o codepage=936,iocharset=cp936。为了永久生效,可以修改/etc/fstab文件。例如我的/etc/fstab文件内容为:

LABEL=/ / ext2 defaults 1 1
/dev/hda1 /mnt/c vfat defaults,codepage=936,iocharset=cp936 0 0
/dev/hda7 /mnt/d vfat defaults,codepage=936,iocharset=cp936 0 0
/dev/cdrom /mnt/cdrom iso9660 noauto,owner,ro 0 0
/dev/fd0 /mnt/floppy auto noauto,owner 0 0
none /proc proc defaults 0 0
none /dev/pts devpts gid=5,mode=620 0 0
/dev/hda10 swap swap defaults 0 0

  5:安装中文TrueType字体(参看前文)

  6:设置GNOME的TrueType中文字体

  为了使我们设置的TrueType字体能够在GNOME下面使用,必须修改GNOME的资源配置文件。

  编辑/etc/gtk/gtkrc.zh_CN文件,设置字体如下:

style gtk-default-zh-cn {
fontset =  -misc-simsun-medium-r-normal--14-0-0-0-p-0-*-*
}
class GtkWidget style gtk-default-zh-cn

  再编辑/etc/gnome/gtkrc.zh_CN文件,将所有的FontSet设置为:

fontset = -misc-simsun-medium-r-normal--14-*-*-*-*-*-gb2312.1980-0

  此时运行startx进入GNOME桌面,就可以看到漂亮的TrueType中文字体啦!

  七、kde2.1.1的汉化

  KDE 2.1.1 于今年3月26日发行的最新版本. 该版本包括了linuxforum成员Rigel为 KDE 2.1 写的中文补丁. 同时 KDE 中文翻译队伍的负责人Wan Jian 修正了有问题的 po 文件, 这样 KDE 2.1.1 就成了第一个无需补丁支持简体中文的 KDE 版本.

  我得到消息后,第一时间下载到kde2.1.1的软件包,我用的是redhat 7.1B2版本,在网站上没有提供redhat 7的rpm包,我只有用bz2软件包了。

  我已经安装了qt-2.2.4的rpm包,所以就可以直接开始安装,其他同志最好用qt-2.3。注意:我用的是qt-2.2.4的rpm包,如果用qt-2.3的tgz版本,请注意修改相应部份.(PATH,QTDIR)

  首先,安装kde2.1.1

  首先把下载的bz2包拷贝到/usr/local/kde下,用bunzip2和tar解包,如:

bunzip2 kdelibs-2.1.1.tar.bz2
tar xvfkdelibs-2.1.1.tar

  注意:安装kde必须安装kdelibs和kdebase,强烈要求安装kdesupport,其它都为选装,我当然全装了,我的机器为celeron 600,128M,足足用了两个晚上才编译完,怕麻烦的人还是等rpm包吧!!

  修改~/.bash_profile

PATH=/usr/local/sbin:/usr/sbin:/sbinPATH:
$HOME/bin:/usr/local/bin:/usr/lib/qt-2.2.4/bin:/usr/local/kde/bin
BASH_ENV=$HOME/.bashrc
USERNAME=root
QTDIR=/usr/lib/qt-2.2.4
KDEDIR=/usr/local/kde/
export USERNAME BASH_ENV PATH QTDIR KDEDIR
export LANG=zh_CN.GB2312
export LC_ALL=zh_CN.GB2312
export XMODIFIERS=@im=Chinput

  进入/usr/local/kde/kdelibs目录

./configure
make
make install

  编译极耗时间,去喝喝茶吧!

  接着编译其它软件包,完成后修改~/.xinitrc

rm ~/.xinitrc
cat .xinitrc
startkde
Ctrl-D

  接着,参照前文,安装中文字库和chinput。最后,调整kde,重启动后,用startx进入kde.修改字符集,改选字符,退出再进入kde,一切正常,所有的菜单都显现汉字,不过小问题总是有的, 都算不错了。用gedit编辑中文,用mozilla上网,一切都棒极了,mozilla的书签中文显示也很正常。


作者: suncon    时间: 2003-11-30 03:30
标题: linux系统管理
打印

1、 如何打印中文 postscript 文件?
2、我能打印中文 postscript 文件, 可是还是不能从 xxx 程序中打印中文!?

3、我是如何打印中文的

八、中文打印

  在 linux 下打印是件麻烦事, 中文打印由甚. 为什么哪? 将屏幕上看到的文字印到纸上, 要经过两步:

  1)应用程序生成postscript 文件&#59;

  2)将该文件送到打印机 (直接或通过 ghostscript). 让我们先从第二步看起.

1、 如何打印中文 postscript 文件?

  最大的问题是一般打印机不支持或不带中文字体. 一般我们使用 ghostscript, 但ghostscript 对中文字体的支持也不是很完美. 大多数情况下需要打补丁. 目前有以下几种解决方案:

  1)直接 patch ghostscript 使其支持 truetype 字体. 可参看该网站. 这是目前最为简单的方法. 缺点是需要  6.0 版的 ghostscript, 该版目前还没有以GPL施放, 任何 linux 都不会预装, 需要自己下载安装.

  2)使用 CID 字体. CID 是 adobe 为亚洲文字设计的字体, 打破了 type1 字体只能容纳 256 个字符的限制. ghostscript ( V5.5?) 直接支持 CID 字体, 无需补丁. 可参看同一网站如何设置. 本来这应该是最好的方案, 因为不要打补丁.可惜 CID 字体太少了.

  3)Patch ghostscript 使其支持 VFlib, 通过 VFlib 支持 truetype 字体. 优点是支持老的 ghostscript 版本 (中文有 for 5.5 的 patch, 日文甚至有 for 4.x的), 支持字体变形等. 缺点是需要额外安装 VFlib. Turbolinux 6.0 以上及CLE v0.9p1以上均使用了该方法. 可以到它们相应的软件包中找补丁.

  4)陈向阳的 gbpfb 包, 将中文 truetype 字体转换成 type1 pfb 字体, 由于type1字体只能容纳 256 个字符的限制, 一个 truetype 字体将会生成 30-40个 pfb 字体, 再由一个前端文件控制. 当年这是我们中国人唯一知到的打印中文 postscript文件的方法. 我还记得用此法第一次从 netscape 打印出中文的惊喜. Turbolinux4.x 以下及蓝点等中文发布均使用了该方法. 但现在与前述的 1-3 法相比, 显得有些简陋, 存在一些难以克服的毛病, 已经越来越少的被使用了. 如果您想要可以在上面提到的几个中文 linux 中找到.

  5)在 postscript 文件中内嵌中文点阵字体. 优点是连 ghostscript 都不需要了,直接送到任何支持 postscript 的打印机上就可打印. 缺点是生成的文件庞大,打印出的质量欠佳.

  最后, 使用 1-4 法都需要通过 ghostscript 将文件发往打印机. 有两种用法:

  直接使用, 如:

gs -q -dBATCH -sDEVICE=printer-type -sOutputFile=lpr -
或设置 filter 使 lpr 自动调用 ghostscript.

2、我能打印中文 postscript 文件, 可是还是不能从 xxx 程序中打印中文!?

  这就需要我们看看打印过程的第一步, 即应用程序生成postscript 文件. 目前有多少 linux 下的程序能生成支持中文的 postscript 文件? 少只又少, 真正不需要任何补丁就能 work 的我知道的有三个: netscape/mozilla/abiword(=0.12).

  主要问题是很少有程序能正确处理中文 font. 在 UNIX/LINUX 世界没有统一的打印API, 任何程序想打印, 必须自己写 code 生成 postscript 文件, 很难想像所有程序员都原意并有能力考虑中文 postscript 字体问题. 现在 gnome-print 和 QT printer class 都是试图产生一个公用 API 以便应用程序不必自己处理生成 postscript的问题. 可惜二者都处于起步阶段, 仅仅聚焦于 type1 字体, 还没顾的上考虑中文的问题. 也就是说目前所有 GNOME/KDE 应用程序, 只要使用这两个 API, 都不能生成正确的中文 postscript 文件, 不能印出中文字. 台湾有人(见CLE的QT包)写了 QT printer 的patch, 但还不是很完善&#59; 没听说有 gnome-print 的中文 patch.

3、我是如何打印中文的

  我用的是ghostscript-6.0-1.i386.rpm和gbpfb-1.1-2.i386.rpm来进行中文打印。想要该软件的人可再http://www.linuxaid.com.cn/engineer/hubertzou/获得。

  需要提醒的是,要先安装ghostscript-6.0-1.i386.rpm,用qs -help测试一下后再安装gbpfb-1.1-2.i386.rpm.

  再netscape或mozilla中的print command中把lpr改为ns2cps - | lpr

  这样,就可以用netscape来打印中文html和中文txt文件了。

  至于其它的方法,我没有试过,但为了提供尽量多的方法,所以也提供给大家。
作者: suncon    时间: 2003-11-30 03:31
标题: linux系统管理
Mozilla和glibc

上网冲浪最重要的软件莫过于浏览器了。Linux下常用的浏览器有Netscape、Lynx等。这里我要向各位推荐的是Netscape的新一代浏览器核心——Mozilla。
glibc 2.2的一个重要方面就是彻底国际化,比如wchar_t内码为4字节Unicode(UCS-4)。

  九、Mozilla的汉化

  上网冲浪最重要的软件莫过于浏览器了。Linux下常用的浏览器有Netscape、Lynx等。这里我要向各位推荐的是Netscape的新一代浏览器核心——Mozilla。Mozilla完全符合最新W3C标准,目前最新版0.8.1无论是从功能还是稳定性上来说都已经做的相当不错了。

  1、下载Mozilla 0.8.1

  下载地址http://www.mozilla.org

  2、安装

tar zxvf mozilla-i686-pc-linux-gnu-0.8.1.tar.gz
cd mozilla
./mozilla

  这时mozilla就启动了。现在我们来做一些配置工作。首先选择Edit--Preferences,弹出对话框,选择Appearance--Fonts,在Language Encoding中选择Simplified Chinese,然后将Serif、Sans Serif、Monospace都选择misc-simsun-gb2312.1980-0字体。Size设为14。

  有些站点可以自动识别语言。这可以通过以下方法实现:

Navigator--Languages--Add...

  选择Chinese/China [zh-cn]

  点击Move Up,将中文语言放在最上面。

  最后点OK完成配置,然后退出Mozilla。(注意:这一点很重要,因为mozilla退出时会改写配置文件。如果没有退出mozilla做以下操作将无效!)

cd mozilla/defaults/pref,编辑unix.js

  找到这样两行

pref(font.min-size.variable.zh-CN, 16)&#59;
pref(font.min-size.fixed.zh-CN, 16)&#59;

  改为

pref(font.min-size.variable.zh-CN, 12)&#59;
pref(font.min-size.fixed.zh-CN, 12)&#59;

  这样可以使网页看上去美观多了。

  3、最后是对输入法的配置

cd ~/.mozilla

  在里面找到pref.js文件,在文件最后加上这样一行

pref(xim.input_style,over-the-spot)&#59;


  然后运行mozilla,就可以显示效果很好的中文网页了!显示效果一点不比IE 5.0差。

  为了方便,可以在panel中增加mozilla的启动图标。mozilla有一个bug,当xmms正在播放的时候不能启动,因此启动mozilla时需要停止xmms。

  为了方便中文识别,可以选择View--Character Coding--Auto-Detect--Simplified Chinese以后mozilla会自动识别中文代码页面。

  十、glibc 2.2的汉化实验

  glibc 2.2的一个重要方面就是彻底国际化,比如wchar_t内码为4字节Unicode(UCS-4)。对于最新国家标准18030-2000的支持更是自然而然的事。

  我的兴趣所在却是UTF-8。试验UTF-8的条件终于成熟了。

  第一件事,去http://dickey.his.com/xterm/xterm.html取来最新的 xterm 源码包,

tar zxf xterm.tar.gz
./configure --enable-wide-chars
make

  得到 xterm 执行码。调出一个新的 xterm 窗口,


./xterm -u8 -fn 9x18U  

  在这个 xterm 窗口中,理论上说,所有的Unicode文件都能显示,中文自不例外。假如手头一时找不到UTF-8编码的文件,转一个很容易。比如 A.GBK是一个国标文件,用 iconv -f GBK -t UTF-8 A.GBK A.UTF-8马上得到一个UTF-8文件。看一下对不对, cat A.UTF-8

  第二件事,造一个使用UTF-8的中文环境。

  先拿两个文件来,

cp /usr/share/i18n/charmaps/UTF-8.gz .&#59;
gunzip UTF-8.gz cp /usr/share/i18n/locales/zh_CN


  由这两个文件便可以生成UTF-8中文环境,

localedef -v -c -f ./UTF-8 -i ./zh_CN /usr/lib/locale/zh_CN.UTF-8

  有了这一中文环境,就可以选用了,

LC_ALL=zh_CN.UTF-8&#59; export LC_ALL

  如何证明呢,看时间, date +%c结果是 2000年11月09日星期五EST下午10点39分15秒甚至ls -l也显示出中文月份。至于中文输入,chinput,cce就可搞定!


作者: suncon    时间: 2003-11-30 03:32
标题: linux系统管理
路由功能

ADSL

本解决方案主要针对公司、学校、网吧等需用一条ADSL将整个局网连上INTERNET,适合于10 -50台计算机的中小型网络用户。对于10台以下计算机的用WINAGTE、SYGATE就蛮好用。
让我们来看看具体环境先,某公司总部办公室21间、计算机30台。组成10-100MB对等局域网,用一条ADSL宽带线路跑,以前用WINGATE将局域网连上INTERNET,后来觉得不爽我又用WINDOWS2000双网卡做了个NAT地址转换,使用网关和透明协议拖。这下下感觉舒服些了。呵呵,用了不久又发现些不大不小的毛病:比如内部互发OICQ慢啊,访问SINA.COM.CN等个别网站有问题啊等等。MS的东东看似简单但是当你想微调一下系统的时候,你就会突然发现原来人生多么无奈啊。痛定思痛!:(我毅然决定放弃WINDOWS2000,改用LINUX!!

要用LINUX得搞台机器吧,东拼西凑好不容易搞了一台。各位看官请看: INTEL FX主板+PENTIUM 75芯片+16MB内存+540MB硬盘+512K显卡+DE220 10MB网卡。软件嘛随便找个LINUX发行版,我手头有REDHAT 6.2 核心是2.2.14,按SERVER的安装方式,经过长达48分钟左右的安装,可爱的#提示符出现在大家面前!各位看客也可以根据自己的具体情况安装。

  硬件、软件都装好了,下面开始具体配置。(加了#提示符号表示输入命令)

1、用ifconfig看看网络配置
[root@localhost /root]#ifconfig
lo  Link encapocal Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:3924 Metric:1
RX packets:23 errors:0 dropped:0 overruns:0 frame:0
TX packets:23 errors:0 dropped:0 overruns:0 carrier:0

 只有lo没找到网卡。不急,自己配。我是DLINK的DE220 IRQ=3 IO=300,兼容NE2000。在/etc/conf.modules 加两句。
具体如下:

[root@localhost /root]#cd /etc
[root@localhost /root]#vi conf.modules
alias eth0 ne
options eth0 io=0x300 irq=3

IO和IRQ可以根据你自己的网卡设置如果不能插入就按INSERT,加完就按ESC。再按: ,再输入w 存盘,再q 退出。如果不放心就 #more conf.modules 看看写进去没有。
一般市面上ISA的便宜网卡都兼容NE2000。如果是新手在LINUX下安装网卡的可能会遇到这样那样的问题,多在网上找找看看,一般都能解决。要提醒大家最好别用PNP即插即用模式,在LINUX出了问题不好解决,简直是场噩梦。

2、下面配置网卡IP地址, 在/etc/sysconfig/network-scripts下有个文件ifcfg-eth0 写成如下:

DEVICE=eth0
IPADDR=192.168.0.254
这是网卡的IP地址,以后客户机的网关就是这个地址。
NETMASK=255.255.255.0
NETWORK=192.168.0.0
BROADCAST=192.168.0.255
ONBOOT=yes
BOOTPROTO=none

重启动就能找到网卡。然后

[root@localhost /root]#ifconfig
eth0 Link encap:Ethernet HWaddr 00:40:05:64:11:28
   inet addr:192.168.0.254 Bcast:192.168.0.255 Mask:255.255.255.0
  UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
  RX packets:347573 errors:0 dropped:0 overruns:0 frame:0
  TX packets:40194 errors:0 dropped:0 overruns:0 carrier:0
  collisions:35 txqueuelen:100
  Interrupt:3 Base address:0x300
lo  Link encapocal Loopback
  inet addr:127.0.0.1 Mask:255.0.0.0
  UP LOOPBACK RUNNING MTU:3924 Metric:1
  RX packets:23 errors:0 dropped:0 overruns:0 frame:0
  TX packets:23 errors:0 dropped:0 overruns:0 carrier:0
  collisions:0 txqueuelen:0
哈哈,eth0找到网卡了,配置也正确,恭喜恭喜!进行下一步。

3、下一步做ADSL的驱动。
去http://www.roaringpenguin.com/pppoe/rp-pppoe-2.6.tar.gz下个驱动程序先,大概85K大小。copy到/root去。然后

#tar xvfz rp-pppoe-2.6.tar.gz
#cd rp-pppoe-2.6
#./go

开始安装,装好就#make一下下,开始配置ADSL。

Welcome to the Roaring Penguin ADSL client setup. First, I will run some checks on your system to make sure the PPPoE client is installed properly... Looks good! Now, please enter some information:
USER NAME
Enter your PPPoE user name (default):

这里输入在电信局申请的adsl的帐号

INTERFACE
Enter the Ethernet interface connected to the ADSL modem For Solaris,this is likely to be something like /dev/hme0. For Linux, it will be ethn,where 'n' is a number.(default eth0):

问你用哪片网卡拨号,默认是第一片eth0就可以了

4、最后一步:配置ipchains伪装IP。
在 /etc/sysconfig的network文件里保证要有这句: FORWARD_IPV4=true
然后改/etc/rc.d/rc.local这个文件,加入以下内容

SPAN la
Do you want the link to come up on demand, or stay up continuously? If you want it to come up on demand, enter the idle time in seconds after which the link should be dropped. If you want the link to stay up permanently, enter 'no' (two letters, lower-case.)
NOTE: Demand-activated links do not interact well with dynamic IP addresses.You may have some problems with demand-activated links.
Enter the demand value (default no):

用缺省的no就可以了。

Please enter the IP address of your ISP's primary DNS server. If your ISP claims that 'the server will provide DNS addresses', enter 'server' (all lower-case) here. If you just press enter, I will assume you know what you are doing and not modify your DNS set up.
Enter the DNS information here:

这里填你ISP的DNS地址,成都用61.139.2.69,辅助DNS成都可用202.98.127.32

PASSWORD
Please enter your PPPoE password:
ADSL拨号密码这个东东。

搞定!爽爽,用#adsl-start 就可以开始拨号。如果连接成功系统会提示你:
…….connect
用ifconfig看看。[root@localhost /root]# ifconfig

eth0  Link encap:Ethernet HWaddr 00:40:05:64:11:28
  inet addr:192.168.0.254 Bcast:192.168.0.255 Mask:255.255.255.0
  UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
  RX packets:347573 errors:0 dropped:0 overruns:0 frame:0
  TX packets:40194 errors:0 dropped:0 overruns:0 carrier:0
  collisions:35 txqueuelen:100
  Interrupt:3 Base address:0x300
lo  Link encapocal Loopback
  inet addr:127.0.0.1 Mask:255.0.0.0
  UP LOOPBACK RUNNING MTU:3924 Metric:1
  RX packets:23 errors:0 dropped:0 overruns:0 frame:0
  TX packets:23 errors:0 dropped:0 overruns:0 carrier:0
  collisions:0 txqueuelen:0
ppp0  Link encapoint-to-Point Protocol
  UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1492 Metric:1
  RX packets:20498 errors:0 dropped:0 overruns:0 frame:0
  TX packets:19187 errors:0 dropped:0 overruns:0 carrier:0
  collisions:0 txqueuelen:10

看见ppp0没有!'

作者: suncon    时间: 2003-11-30 03:33
标题: linux系统管理
IPChains

用Linux+IPChains代替Windows+WinGate
蓝森林 http://www.lslnet.com 张中华
任务:办公室有10台电脑,组成局域网,其中1台名为gate的机器配有ISDN卡,可拨号上网,另外9台机器也要上网,由gate机器做代理或网关,共享其ISDN设备。原来的方案是:gate机器上的操作系统是Win98,使用的代理软件是WinGate。现在,gate机器的操作系统换成了Linux,怎么让其它9台机器也能上网?
经过尝试,我使用IPChains的IP伪装转发功能成功地做到了这一点。我的配置为:蓝点Linux 2.0,Kernel-2.2.16,isdn4linux v3.1pre1,上海贝尔生产的ISDN内置卡,型号为SBT6021。
下面介绍具体做法。介绍顺序为:内核-ipchains的配置-其它机器的配置。

0、 前提条件

前提条件当然就是这台配有ISDN卡,安装了Linux的名为gate的机器,本身必须能够顺利拨号上网。我已做到了,具体操作过程写在我的另一篇文章《在Linux下使用ISDN拨号上网》中。

1、 内核

这个方案的原理是:由于这台gate机器建立拨号连接后,具有真正的IP地址,能够正常地访问Internet,而局域网内其它机器却没有真正的IP地址,不能象gate机器那样正常
地访问Internet,解决办法就是由gate机器代劳其它机器的Internet访问请求,假装是它自己的。把这台gate机器作为局域网的网关,当它收到来自局域网内其它机器的请求数据包时,进行伪装,然后再转发出去;相应地,当伪装后发出去的数据包得到响应返回时,先对该响应数据包进行还原,再转交给回局域网内真正发出请求的那台机器。这种做法叫做IP Masquerade(IP伪装)。
要Linux内核支持IP伪装这种功能,在编译内核时,必须选中下列选项:

Network firewalls
IP: firewalling
IP: masquerading
IP: ipportfw masq support
IP: ipautofw masquerade support
IP: ip fwmark masq-forwarding support
IP: ICMP masquerading

但我不必急于编译内核,如果现有的内核已经包含这些选项了,我又何必重复一遍呢。
那我怎么知道现有内核是否已经包含这些选项了呢?看内核编译配置文件/usr/src/linux/.config(注意:文件名以.开头的文件是隐藏文件,要用ls -a才可看到。)我看到其中有下面这7行内容,对应于刚才的7个选项:

CONFIG_FIREWALL=y
CONFIG_IP_FIREWALL=y
CONFIG_IP_MASQUERADE=y
CONFIG_IP_MASQUERADE_ICMP=y
CONFIG_IP_MASQUERADE_IPAUTOFW=m
CONFIG_IP_MASQUERADE_IPPORTFW=m
CONFIG_IP_MASQUERADE_MFW=m

=y表示内核直接支持(代码已链入内核中),=m表示模块支持(代码在另外的内核中,可由内核载入)。于是这就表明,蓝点Linux 2.0的原有内核已包含这些选项了,我就不用重新编译内核啦。
但仍然得做点事情,首先必须命令内核,启动IP转发功能:
   echo 1  /proc/sys/net/ipv4/ip_forward
往/proc/sys/net/ipv4/ip_forward里写入1就行了。
有些功能如ftp, irc等的伪装,需要相应的模块支持,这些模块放在/lib/modules/2.2.16/ipv4目录中,装入它们:
   depmod -a
   modprobe ip_masq_ftp
   modprobe ip_masq_irc
   modprobe ip_masq_raudio

2、 ipchains的配置
蓝点Linux 2.0包含的ipchains软件已经足够满足我的要求了,我就不必安装新的,只需配置一下即可。Ipchains是一个包过滤器,功能强大,设置也复杂,但我只想使用其IP伪装转发功能而已,设置得以简化。我这台Linux机器在一个局域网上,局域网的域名为thalia.com,地址为210.96.100.0,这台机器的主机名为gate,地址为210.96.100.10。

对ipchains过滤器进行设置,就是设置各种链及规则。先看看目前情况如何:

   ipchains -L
得到类似下面的信息:

   Chain input (policy ACCEPT):
   Chain forward (policy ACCEPT):
   Chain output (policy ACCEPT):

没什么规则,3条链的策略都是接受。
由于只是使用伪装转发功能,所以只对forward链进行操作。
ipchains -P forward DENY把forward链的策略设为DENY,拒绝通过。此后增加可通过的规则,逐渐允许更多的数据包通过,这是一种先紧后松的做法。

   ipchains -A forward -s 210.96.100.0/255.255.255.0 -j MASQ

增加1条规则,这条规则说明:对来自210.96.100.0局域网内(网络掩码为255.255.255.0)的数据包(-s 210.96.100.0/255.255.255.0),进行伪装处理(-j MASQ)。
这时候再看一下情况如何:
   ipchains -L
得到类似下面的信息:
   Chain input (policy ACCEPT):
   Chain forward (policy DENY):
   target prot opt source destination ports
   MASQ all ------ 210.96.100.0/24 anywhere n/a
   Chain output (policy ACCEPT):
   forward链中多了1条MASQ规则。
要简单地实现共享ISDN上网,这已经足够了。

3、 其它机器的配置
配置局域网上的其它Win98, Win2000机器,要点是把缺省网关设为那台Linux gate机器,DNS域名服务器也设为那台Linux gate机器。应用软件如IE,OutlookExpress等不用做任何设置,想象成ISDN装在本机上就行。
我现在就去设置1台Win98机器试试看。
(1)在“控制面板 | 网络 | 配置”下,选中“TCP/IP-3Com PCI Ethernet Adapter”(这台机器配的是3Com网卡),点击“属性”按钮,弹出TCP/IP属性对话框。
(2)到“IP地址”页中,指定IP地址,IP地址为210.96.100.14,子网掩码为255.255.255.0;到“网关”页中,添加新网关210.96.100.10。
(3)机器重启。
(4)打开IE,浏览http://168.160.224.103(即新浪网sina.com.cn),看到了新浪的首页;但是浏览http://www.sina.com.cn,却不行。这是域名解析的问题。
(5)重复(1)步骤,弹出TCP/IP属性对话框,到“DNS配置”页中,启用DNS,主机名写zzh,添加DNS服务器搜索顺序210.96.100.10。机器重启。打开IE,再次浏览http://www.sina.com.cn,这次好啦。

4、 形成shell文件
上面对内核和ipchains的配置是逐条命令进行的,已经全部成功通过,现在把它们写成shell文件。
/etc/ppp/ip-masq-start文件内容如下:
# IP masq
echo 1  /proc/sys/net/ipv4/ip_forward
depmod -a


modprobe ip_masq_irc
modprobe ip_masq_raudio
ipchains -P forward DENY
ipchains -A forward -s 210.96.100.0/255.255.255.0 -j MASQ

让它成为可执行文件:
   chmod a+x /etc/ppp/ip-masq-start
以后事情就简单了。要开启IP伪装转发功能,下命令/etc/ppp/ip-masq-start。


作者: fibre    时间: 2003-11-30 22:23
标题: linux系统管理

作者: 天涯浪客    时间: 2003-12-2 20:51
标题: linux系统管理
呵呵 谢谢楼主了~




欢迎光临 光电工程师社区 (http://bbs.oecr.com/) Powered by Discuz! X3.2