分享
 
 
 

FreeBSD handbook中文版 3 Unix 基础

王朝system·作者佚名  2006-11-23
窄屏简体版  字體: |||超大  

目录

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 基础知识

=============================================================

(翻译中出现的任何问题或错误,请广大读者及时反馈给我:freebsdhandbook@163.com)

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(/)是最重要的。系统启动时,这个目录是最先被挂上的,而

且它嘶镜南低承畔ⅰoot 目录也包含了你能够挂上的其它文件系统的装载点。装

载点是其它文件系统能够被连接到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 [1] [url=http://www.chinamx.com.cn/Article/os/FreeBSD/200605/20060530181856_31911_2.html][2] 下一页

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有