QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1311|回复: 0

FreeBSD handbook中文版 3 Unix 基础

[复制链接]
发表于 2003-1-19 04:37:14 | 显示全部楼层 |阅读模式
[code:1]FreeBSD handbook中文版 3 Unix 基础
本文出自: 作者: 张纪青编译 [email protected] (2003-01-03 06:02:01)
目录
3 Unix 基础
3.1 概要
3.2 权限
3.3 目录结构
3.4 挂上和卸载文件系统
3.5 进程
3.6 后台,信号和杀死进程
3.7 shell  
3.8 文本编辑器
3.9 设备和设备节点
3.10 更多信息

=============================================================
第3 章,UNIX 基础知识
=============================================================
(翻译中出现的任何问题或错误,请广大读者及时反馈给我:[email protected])  
3.1 概要
这一章将介绍UNIX 的基础知识和FreeBSD 的功能。如果你还是个FreeBSD 的新手,你
在寻求帮助之前,应当先阅读这一章。
读完这章,你会了解到:  
1. UNIX 的文件访问权限是如何工作的。
2. 进程,后台,和信号是什么。
3. 什么是shell,如何改变你的默认登陆环境。
4. 如何使用基本的文本编辑器。
5. 如何阅读联机手册了解更多信息。
3.2 权限
FreeBSD,仍然保持着BSD UNIX 的传统,它的基本原理仍然是以几个关键的UNIX 概念
为基础的。首先,最显著的就是:FreeBSD 是一个多用户的操作系统。这个系统能够允许许
多毫不相关的任务同时工作。对于每一个用户来讲,系统都能非常可靠地分享和管理着来自
不同硬件设备、内存、CPU 时钟的处理请求。
因为系统支持多用户,所以系统管理的每一件事情都必须要设置谁有读,写,和执行的
权限。这个权限用八进制的形式来表示,把它分成三部分:文件拥有者,文件拥有者所在组
和其他成员。这种表示方法如下所示:  
权限值
No read, no write, no execute 0  
No read, no write, execute 1  
No read, write, no execute 2  
第1 页
目录列表
---  
--x  
-w- FreeBSD 使用手册
No read, write, execute 3  
Read, no write, no execute 4  
Read, no write, execute 5  
Read, write, no execute 6  
Read, write, execute 7  
在一个长目录中,用ls –l 命令列一个清单,就显示了文件所有者、文件所有者所在
组和其它成员的权限信息。这里就是它的表示方法:  
-rw- r- - r- -  
从左到右,第一个字符是一个特殊的字符,它告诉你这是一个规则文件,一个目录,一
个特殊字符,一个块设备,一个套接字,还是其它的伪设备文件。下面的三个字符“rw-”  
指明了文件所有者的权限。下面的三个字符“r--”指明了文件所有者所在组的权限。最后
面的三个字符“r--”,给出了其他用户的权限。一个破折号表示这个权限被关闭了。在这
样一个设置下,意味着只有文件所有者才能读、写文件,组能够读文件,其它用户只能读文
件。按照上表的指示,这个文件的权限应该是644,每个数字都代表着这个文件权限的三个
部分。FreeBSD 是如何来控制设备的权限的呢?事实上,FreeBSD 把绝大多数的硬件设备看
作是一个文件,就象其它文件能够被打开,阅读,写数据一样。这些特殊的设备文件保存在
/dev目录下。
目录也可以当作文件来看待。它们有读、写和执行的权限。这里的可执行跟其它文件的
可执行有一些差别。例如,当一个目录被标记为可执行时,意味着这个目录可以被查找到,  
并且可以在这个目录下列目录。如果你想了解如何设置权限的话,你可以参考chmod 命令的
有关说明。
3.3 目录结构
FreeBSD 使用的文件系统决定了许多基础的系统操作,文件系统的层次结构是非常重要
的。在所有的目录中,root(/)是最重要的。系统启动时,这个目录是最先被挂上的,而
且它包含了基本的系统信息。root 目录也包含了你能够挂上的其它文件系统的装载点。装
载点是其它文件系统能够被连接到root 文件系统的目录。这些目录通常被指定在
第2 页
-wx  
r—  
r-x  
rw-  
rwx FreeBSD 使用手册
/etc/fstab下。/etc/fstab是一个几种文件的表,装载点能够被系统参考。在/etc/fstab  
中的绝大多数文件系统,能够在启动时被自动挂上,除非它们包含noauto 选项。你可以参
考fstab 的指南,了解更多有关/etc/fstab文件格式和它所包含选项的信息。
现在,主要的目录结构就是这些:  
描述目录
文件系统的根目录/  
单用户和多用户环境下,用户使用的工具。/bin/  
操作系统启动过程中使用的程序和配置文件。/boot/  
/boot/defaults/ 默认的启动配置文件;看看loader.conf。
设备节点;看看intro。/dev/  
系统配置文件和脚本。/etc/  
默认的系统配置文件;看看rc. /etc/defaults/  
象sendmail 这样的用于邮件传输代理的配置文件。/etc/mail/  
/etc/namedb/ Named 配置文件;看看named。
通过via 每天,每周,每月运行的脚本;看看periodic 的联机手册。/etc/periodic/  
/etc/ppp/ Ppp 配置文件;看看ppp 联机手册。
系统管理员使用的用作一个临时加载点的空目录。/mnt/  
处理文件系统;看看procfs,mount procfs 联机手册。/proc/  
/root/ Root 帐户的主目录。
单用户和多用户使用的系统程序和管理工具。/sbin/  
在独立环境下使用的程序。/stand/  
临时文件。/tmp/  
主要是用户的工具和应用程序。/usr/  
通常是工具,程序工具和应用程序。/usr/bin/  
标准C include 文件。/usr/include/  
文档库/usr/lib/  
各种工具的数据文件。/usr/libdata/  
系统守护程序和系统工具(被其他程序执行的)。/usr/libexec/  
第3 页/usr/local/  
/usr/obj/  
/usr/ports FreeBSD ports collection 。
/usr/sbin/  
/usr/share/  
/usr/src/  
/usr/X11R6/ X11R6 发行的可执行程序,库等。
/var/  
/var/log/  
/var/mail/  
/var/spool/  
/var/tmp/  
/var/yp NIS 地图。
3.4 挂上和卸载文件系统
文件系统可以形象化为一棵树,root 就是根:象这样/,/dev,/usr 等。根目录下的其
他目录也可能有分支,这些分支也会有它们自己的分支,象这样/usr/local 等等。之所以
要采用这种分离的文件系统有很多原因。/var 包含log,spool 和不同的临时文件。当然,  
这个目录也可能会被塞满。塞满根文件系统不是一个好主意,所以从/分离出一个/var 比较
好。
在其他的文件系统上,采用这种目录树结构的另一个原因是他们可能会在另外一个物理
磁盘上,或在另外一个虚拟磁盘上,象NFS 文件系统或CDROM 驱动器。
3.4.1 fstab 文件
在系统启动的过程中,在/etc/fstab 中列出的文件系统会被自动地挂上。/etc/fstab  
文件包含了一个以下面的格式排列的列表:  
device /mount-point fstype options dumpfreq passno  
FreeBSD 使用手册
本地执行的,库等。也是默认的放置ports 框架的地方。Ports 的文档
放在/usr/local/share/doc/ port中。
通过建构/usr/src 目录树产生的特定结构的目标树。
系统守护程序和系统工具(由用户执行的)。
独立结构的文件。
本地源代码文件。
多种日志,临时文件,和spool 文件。
多种系统日志文件。
用户邮箱文件。
多种打印机和邮件系统spooling 目录。
系统重新启动之间保存的临时文件。
第4 页FreeBSD 使用手册
Device 是一个设备名,就象上一章磁盘命名规则所提到的。
mount-point 是一个目录,在它上面挂上文件系统。
Fstype 是要挂上的文件系统类型。FreeBSD 的默认文件系统是ufs。
Options 选项既可以是rw 可读写文件系统,也可以是ro 只读文件系统,可根据其它选项的
要求来定义。在系统按顺序启动过程中,一个普通的选项是noauto,它通常不会被挂上。
其他的选项可参看mount 的联机手册。
3.4.2 mount 命令
mount 命令通常是用来挂上文件系统的。它的最基本的操作格式:  
# mount device mountpoint  
它有很多的选择参数,但绝大多数是这样的:  
mount options  
-a  
挂上/etc/fstab 中的所有文件系统,也可以用-t 来修改。
-d  
除了挂文件系统外,可以做所有事情。
-f  
强迫挂上文件系统。
-r  
挂上只读文件系统。
-t fstype  
以给定的文件格式挂上给定的文件系统。如果加上-a 参数,就只能挂上给定类型的文
件系统。“ufs”是默认的文件类型。
-u  
在文件系统上升级mount 选项。
-v  
更加详细。
-w  
修改文件系统为读,写。
第5 页FreeBSD 使用手册
-O 选项提供了一个用逗号分割的选项列表,包括下面这些:  
nodev  
不要解释文件系统上的特殊设备。有用的安全选项。
noexec  
不允许在这个文件系统上执行程序。有用的安全选项
nosuid  
不要在文件系统上解释setuid 或setgid 标记。有用的安全选项。
3.4.3 umount 命令
在umount 命令后可能会加载的参数可能是一个挂载点,一个设备名,或是-a,-A 选项。
所有加-f 参数的形式将会被强迫卸载,-v 参数就会太冗长。-a,-A 选项用来卸载所有挂上
的文件系统。
3.5 进程
FreeBSD 是一个多任务的操作系统。这意味着可以同时有多个程序一起运行。你运行的
每个程序叫做一个进程。你运行的每个程序都至少要启动一个进程,系统中时刻都有很多
进程在运行,以维持系统的功能。
每一个进程都有一个叫做进程ID 或PID 的号码,每个进程也会有一个主人(或叫属主)  
和它所在的组。主人和组的信息用来决定进程能够打开什么文件和设备,使用文件的权限。
绝大多数进程都有一个父进程。父进程是启动其他进程的进程,你运行的任何命令也是进
程。每个进程将使用你的shell 作为它的父进程。除这个进程之外的一个特殊的进程叫做
init。Init 总是第一个进程,所以它的PID 总是1。当FreeBSD 启动时,init 会被内核自
动启动。
有两个命令可以用来查看系统的进程,ps 和top。ps 命令用来显示当前运行的进程的
列表,还可以显示它的PID,它们使用多少内存,它们启动的命令行等等。Top 命令显示了
所有运行的进程,每隔几秒就刷新一次,以至你可以动态地观察你电脑的工作状况。默认
情况下,ps 只显示正在运行的你自己的命令。例如:  
% ps  
第6 页FreeBSD 使用手册
PID TT STAT TIME COMMAND  
298 p0 Ss 0:01.10 tcsh  
7078 p0 S 2:40.88 xemacs mdoc.xsl (xemacs-21.1.14)  
37393 p0 I 0:03.11 xemacs freebsd.dsl (xemacs-21.1.14)  
48630 p0 S 2:50.89  
/usr/local/lib/netscape-linux/navigator-linux-4.77.bi  
48730 p0 IW 0:00.00 (dns helper) (navigator-linux-)  
72210 p0 R+ 0:00.00 ps  
390 p1 Is 0:01.14 tcsh  
7059 p2 Is+ 1:36.18 /usr/local/bin/mutt -y  
6688 p3 IWs 0:00.00 tcsh  
10735 p4 IWs 0:00.00 tcsh  
20256 p5 IWs 0:00.00 tcsh  
262 v0 IWs 0:00.00 -tcsh (tcsh)  
270 v0 IW+ 0:00.00 /bin/sh /usr/X11R6/bin/startx -- -bpp 16  
280 v0 IW+ 0:00.00 xinit /home/nik/.xinitrc -- -bpp 16  
284 v0 IW 0:00.00 /bin/sh /home/nik/.xinitrc  
285 v0 S 0:38.45 /usr/X11R6/bin/sawfish  
正如你在这个例子中看到的,ps 的输出形式是根据数字的排列顺序来组织的。PID 是
先前讨论的进程ID。PID 从1 开始,最高到65536。当你完成以后,再从头开始。TT 显示
了正在运行的tty,也可以安全地略过。
Ps 支持许多不同的选项来改变显示的信息。最有用的设置是auxww。一个有关所有运
行的进程的显示信息,不仅仅是你自己的。U 用来显示进程的使用者和内存的使用者。X 用
第7 页FreeBSD 使用手册
来显示后台运行的进程信息,ww 用来显示所有的命令行,一旦它比较长而超出屏幕时,就
会截取其中一段。
Top 的输出也比较熟悉。可以看看下面的例子;  
% top  
last pid: 72257; load averages: 0.13, 0.09, 0.03 up 0+13:38:33  
22:39:10  
47 processes: 1 running, 46 sleeping  
CPU states: 12.6% user, 0.0% nice, 7.8% system, 0.0% interrupt, 79.7% idle  
Mem: 36M Active, 5256K Inact, 13M Wired, 6312K Cache, 15M Buf, 408K Free  
Swap: 256M Total, 38M Used, 217M Free, 15% Inuse  
PID USERNAME PRI NICE SIZE RES STATE TIME WCPU CPU COMMAND  
72257 nik 28 0 1960K 1044K RUN 0:00 14.86% 1.42% top  
7078 nik 2 0 15280K 10960K select 2:54 0.88% 0.88%  
xemacs-21.1.14  
281 nik 2 0 18636K 7112K select 5:36 0.73% 0.73% XF86_SVGA  
296 nik 2 0 3240K 1644K select 0:12 0.05% 0.05% xterm  
48630 nik 2 0 29816K 9148K select 3:18 0.00% 0.00%  
navigator-linu  
175 root 2 0 924K 252K select 1:41 0.00% 0.00% syslogd  
7059 nik 2 0 7260K 4644K poll 1:38 0.00% 0.00% mutt  
...  
第8 页FreeBSD 使用手册
整个输出被分为两节。头上(最初5 行)显示运行着的进程的PID,系统的平均负载(反
映系统的繁忙程度),系统的正常运行时间(从上次重起以来的时间),和当前时间。其
它的图显示了当前运行了多少个进程,有多少内存和交换空间已经被占用,系统在不同CPU  
状态之间切换需要花费多长时间。
下面有一连串的竖直排列的ps 命令的输出信息。你可以看到PID,用户名,CPU 时钟
的花费数量,正在运行的命令。Top 也默认地显示了进程所花费掉的内存空间的数量。这可
以被分成两列,一列针对所有的内存数量,一列针对常驻内存数量。整个内存数量就是应
用程序需要多少内存,常驻内存是在此刻使用的内存数量。在这个例子中,你可以看到
Netscape 使用了30M 内存,当前只使用了9MB。Top 每隔两秒自动刷新一次;这可以通过加
上s 选项来修改。
3.6 守护程序,信号和杀死进程
当你使用一个编辑器的时候,你可以要求它加载一些文件。因为它们提供了这样的功
能,而且它们是与一个终端连在一起的。但,有一些程序却不能让用户输入信息,它们是
不与终端连在一起的。例如,一个web 服务器花费所有的时间来回应用户的请求,它通常
不需要你有任何的输入。从一个站点到另一个站点传送email 是另外一个这种类型的应用
例子。我们叫这些程序为daemons(守护程序)。Daemon 具有希腊神话的特征;今天的许
多web 服务器和mail 服务器都使用这些。有时你可能需要与一个守护程序进行通讯。这些
通讯就叫做signal。你可以通过给它发送signal(或是运行进程)来与守护程序通讯。如
果你发送的signal 有很多(有一些有特殊的用处),其它的与应用程序集成在一起,应用
程序的文档会告诉你如何解释signal。你可以发一个signal 给你的一个进程。如果你设法
发送一个signal 给其他人的进程,它就会被忽略。Root 用户除外,它可以发送signal 给
每一个进程。
如果一个应用程序写入错误,就会设法访问内存,FreeBSD 会给进程发送Segmentation  
Violation signal (SIGSEGV)。如果一个应用程序使用alarm 系统来发出警告,那一段时
间以后,它也会发送警告信号。
两个信号可能会中断一个进程,SIGTERM 和SIGKILL。SIGTERM 是一个比较友好的杀死
进程的方法;这个进程也会捕获信号,以便让你关机,关闭可能打开的一些日志文件。在
第9 页FreeBSD 使用手册
关机之前,通常需要完成当前正在做的工作。有时,如果它是处在一个不能打断的任务中,  
一个进程可以忽略SIGTERM。
SIGKILL 无法被进程忽略。它会发出这样的信号“I do not care what you are doing,  
stop right now”。如果你发送SIGKILL 给一个进程,FreeBSD 将会停止那个进程。
你可能要用到的其他signal 是SIGHUP, SIGUSR1 和SIGUSR2。这些是普通用途的
signal。当他们被发送时,不同的应用程序将做不同的事情。
建议你改变一下你的web 服务器的配置文件----你最好告诉web 服务器重新读一下它
的配置文件。你需要重起httpd,但这将会在你的web 服务器上增加一些消耗,而这可能是
你不太欢迎的。绝大多数守护程序通过重新读取它们的配置文件来对SIGHUP 信号作出回应。
不同的后台程序将有不同的行为。所以,要带着问题来阅读守护程序的联机手册。
可以使用kill 命令来发送signal,例如:  
发送一个signal 给处理器
这个例子显示了如何发送一个信号给inetd。Inetd 的配置文件是/etc/inetd.conf。当它
接收到SIGHUP 时,inetd 将重新读取这个配置文件。
寻找你要发送信号的进程ID。可以使用ps,grep 命令。Grep 命令被用来搜索输出, 1.  
寻找你要指定的字符。这个可以有一个普通用户来执行,而inetd 需要是root 用户,所以
ps 必须带上ax 选项
% ps -ax | grep inetd  
198 ?? IWs 0:00.00 inetd -wW  
这儿,inetd 的PID 是198。有时,grep inetd 命令也需要出现在这个输出中。这是
因为ps 必须要找到当前运行的进程的列表。
使用kill 来发送信号。因为inetd 只有root 用户才能运行,你必须使用su 来变2.  
成一个root 用户。
% su  
Password:  
第10 页FreeBSD 使用手册
# /bin/kill -s HUP 198  
就象普通的unix 命令一样,如果它成功执行,kill 将不会输出任何信息。如果你想发
送一个signal 给一个进程,你会看到“kill: PID: Operation not permitted”。如果你
打错了PID,你有可能把信号发错给了某个进程,这样会很糟糕,也有可能把信号发给了一
个当前不在使用的PID,你将可能看到“kill: PID: No such process”这样的信息。
为什么使用/bin/kill:许多shell 提供了内建命令kill;shell 将直接发送信号,比
运行/bin/kill 要好。这点非常有用,但不同的shell 需要用不同的语法来指定信号的名字。
重要点:在系统中随意地杀死进程是个坏主意。特别地,init 进程ID 是1,非常特殊。
运行/bin/kill -s KILL 1 是一个快速关闭你系统的方法。在你键入kill 之前,请你仔细
检查你执行的kill 的参数。
3.7 Shell  
在FreeBSD 中,许多工作是通过一个叫命令解释器{俗称“外壳(shell)”}的命令行
接口来完成的。shell 的主要工作是接收输入的命令然后执行它们。许多shell 也能够用来
帮助完成每天的工作,如:文件管理,文件查找,命令行编辑,宏命令,以及其它环境设置。
FreeBSD 有许多种shell,如:sh,Bourne Shell 和csh,C-shell。许多其它的shell,如
tcsh,bash 拥有更强大的功能,你可以在FreeBSD 的软件包中找到。
你使用哪个shell?那还正是个问题。如果你是一个C 程序员,你可能觉得象tcsh 这
种C 类型的shell,用起来比较舒服。如果你使用Linux 或你是一个UNIX 的新手,你可能
会试一试bash。这里要指出的是每一种shell 都有它自己的特点,你可以根据你的喜好自
由地选择。Shell 的一个基本特征是文件名的自动补充功能。通常在你输入一个命令或文件
名时,你先输入几个字母,然后按TAB 键,命令或文件名会自动补上剩下的字母。例如:我
有两个文件:foobar 和foo.bar。我要删除foo.bar。所以我就输入:rm foo[TAB].[TAB]。
Shell 就会打出rm foo[BEEP].Bar。[BEEP]是铃声。它能够告诉我,因为匹配的问题shell  
不能自动补充文件名。因为foobar 和foo.bar 同时以fo 开始,但它无法完成foo。一旦我
输入.,然后键入TAB,shell 就能补充完文件名。
第11 页FreeBSD 使用手册
Shell 的另外一个功能就是环境变量。环境变量是存储在shell 环境空间中的可变钥匙
对。这个空间能够被shell 的任何程序调用,而且包含了许多程序配置。这儿是一个普通环
境变量的列表:  
详细说明变量
现在登陆的使用者名称。USER  
以冒号分隔的目录列表以便寻找执行文件的路径。PATH  
DISPLAY X11 显示连接的网络名称,如果有的话。
目前用的shell 。SHELL  
使用者终端的名称。用来决定终端机的能力。TERM  
完成几个终端功能的终端退出代码的数据库记录。TERMCAP  
操作系统的种类,如FreeBSD。OSTYPE  
MACHTYPE 现在系统所用的CPU。
使用者喜欢的编辑器。EDITOR  
使用者喜欢的文字呼叫器。PAGER  
以冒号分隔的目录以便寻找联机手册。MANPATH  
在各shell 之间,设置一个环境变量稍微有点不同。例如,象tcsh 和csh 的C 风格shell,  
你可以使用setenv 来设置或查看环境变量。而在象sh 和bash 的Bourne shell 下,你可以
使用set 和export 来查看和设置环境变量。例如,在csh 或tcsh 下,设置或修改环境编辑
器,可以把编辑器设置成/usr/local/bin/emacs:  
%setenv EDITOR /usr/local/bin/emacs  
在Bourne shell 下:  
%export EDITOR=“/usr/local/bin/emacs”  
你也可以在命令列用$放在变量的前面来取得环境变量。echo $TERM 就会显示出$TERM  
的设置值,因为shell 取得了$TERM 并把它传给echo 显示出来。
第12 页FreeBSD 使用手册
Shell 里有很多特殊字符代表着一些资料,我们叫做meta-characters。最常用的就是*  
这个字符,它代表文件名的任何字符。这些meta-characters 会被用在文件名称的全域样式
上。举例来说,键入echo *是和ls 有同样的效果,因为shell 将所有符合*的文件传到命
令列给echo 显示出来。
为了防止这些特殊的字符被shell 转译,我们可以在前面放一个反斜线(\)让它们跳出
来。echo $TERM 会显示出你所设置的终端机。而echo \$TERM 就会直接显示出$TERM 这几
个字母。
3.7.1 改变你的shell  
改变你的shell 的最简单的方法是用chsh 命令。运行chsh 就可以把你带入系统设置的
编辑器中。如果编辑器没有设置的话,你就可以用vi 来代替。直接在此改变“shell:”。
你可以给chsh 加上-s 的参数;这样,就不需要你输入一个编辑器来设置shell 了。例如,  
如果你想把你的shell 设置成bash,你只要这样做:  
% chsh -s /usr/local/bin/bash  
运行不带参数的chsh,编辑shell 将同样能达到目的。
注意:你使用的shell 出现在/etc/shell文件中。如果你在安装软件的时候,已经安
装了一个shell,那么这个就已经做好了。如果你是手工安装shell,那你就必须做。例如,  
如果你手工安装bash,只要把它放在/usr/local/bin中,你只要这样做:  
#echo “/usr/local/bin/bash”>>/etc/shells  
然后再执行chsh。
3.8 文本编辑器
在FreeBSD 中,许多配置信息都是通过编辑一个文本文件来完成的。所以,熟悉一个
文本编辑器是非常必要的。FreeBSD 带有许多的编辑器,可以在ports collection 中找到。
第13 页FreeBSD 使用手册
最容易和最简单的编辑器就是ee 了,它非常容易掌握。要启动ee,你只需要在命令行键入
ee 文件名。例如,要编辑文件/etc/rc.conf,只要键入ee /etc/rc.conf。一进入ee,许
多编辑功能就都列在屏幕的顶部。^字符是键盘的ctl 键,所以^e 键盘的ctl 键加上e 键。
要离开ee,只要键入escape 键,然后选择离开。编辑器会提示你保存刚才的修改。FreeBSD  
也带有很多功能强大的编辑器,象vi,emacs 和vim 等。这些编辑器都有很强大的功能,  
你需要认真地学习。
3.9 设备和设备节点
一个设备大都是一个系统中与硬件相关的活动所使用的,包括磁盘,打印机,图形卡和
键盘。当FreeBSD 启动时,显示的大都是检测到的设备。你可以查看/var/run/dmesg.boot  
文件来看看启动信息。
例如,acd0 是第一个IDE CDROM 驱动器,而kbd0 则是键盘。在unix 系统中的绝大多
数设备必须呼叫设备的节点才能来访问一个特殊文件,这些都放在/dev 目录下。
3.9.1 创建设备节点
当你在系统中添加了一个新的设备或编译支持额外的设备时,需要重建一个设备驱动。
3.9.1.1 MAKEDEV 脚本
在系统中没有DEVFS,设备节点可以使用MAKEDEV 脚本来创建:  
# cd /dev  
# sh MAKEDEV ad1  
这个例子中将创建第二个IDE 驱动器的设备节点。
3.9.1.2 devfs (设备文件系统)  
设备文件系统或devfs,提供了访问内核设备的命名方式。Devfs 获得了这个特殊的文
件系统,代替了创建和修改设备节点。devfs 将在FreeBSD 5.0 中作为默认使用项。
3.10 更多信息
3.10.1 联机手册
第14 页FreeBSD 使用手册
绝大多数FreeBSD 的参考文档是以手册的形式出现的。系统的每个程序都有一个简短
的联机手册。这些手册能够用man 命令来阅读。例如:  
% man command  
command 是你希望了解的命令的名字。例如,要知道ls 的用法:  
% man ls  
联机手册被分成好几节:  
1. 用户命令
2. 系统呼叫和错误编号
3. 在C 库中的功能
4. 设备驱动器
5. 文件格式
6. 游戏和其他娱乐方式
7. 其它一些凌乱的信息
8. 系统维护和操作命令
9. 内核开发
在一些示例中,同一个主题可能会出现在手册的很多地方。例如,chmod 用户命令和
chmod 系统呼叫。在这个例子中,你可以告诉man 命令,你要指定哪一节:  
% man 1 chmod  
这将显示用户命令chmod 的参考文档。参考一个联机手册的特殊的章节通常被附带在
文章的后面,所以第一个chmod 引用了chmod 用户命令和第二个chmod 引用了系统呼叫。
如果你知道命令的名字,就比较好,你只需要知道如何使用。但如果你无法想起命令
的名字是什么?你可能要使用man 加上-k 选项在命令描述中搜索关键字:  
% man -k mail  
第15 页FreeBSD 使用手册
这个命令将出现在一个带有关键字mail 的命令列表中。这与使用apropos 命令具有相
同的功能。所以,你可以在/usr/bin 中寻找所有的奇特的命令,只要这样做:  
% cd /usr/bin  
% man -f *  

% cd /usr/bin  
% whatis *  
可以达到同样的目的。
3.10.2 GNU Info 文件
FreeBSD 包括许多自由软件基金会提供的应用程序和工具。除了联机手册之外,这些程
序都提供叫做info 文件的超文本文件,它可以用info 命令来阅读,或者如果你有emacs,  
可以使用emacs 的info 模式来阅读。
使用info 命令:  
% info  
要看看概要介绍,可以键入h。要看看快速命令参考,可以键入?。  

[/code:1]
您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-17 12:32 , Processed in 0.078012 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表