Solaris10中级读书笔记之一:目录结构的介绍

来源:互联网 发布:模糊控制算法论文 编辑:程序博客网 时间:2024/05/22 06:18

一、root子目录的介绍

Solaris操作系统的目录结构是为了建立更加方便管理.为了建立不同使用目的的原则,目录结构内部建立了目录树的分割.举例来说,根目录的存在支持着本地系统的私有文件和其他系统共享的文件以及用户的主目录.

逻辑上,所有目录都在root目录下.实际上,目录能够定位在单一的文件系统上或者分隔在多文件系统上.每个Solaris必须有一个root文件系统,但是也有其他的文件挂结在这些目录结构上.大多数的文件系统都是在创建在磁盘片上,同时这些文件系统包含或者支持文件和目录.一些文件系统放于虚拟内存的区域内,并被告Solaris内核所管理.

1. 重要的系统目录的介绍

Solaris OS是由一些重要的系统目录和必要的适合操作系统功能性文件组成的结构.下面列出了Solaris OS中一些重要的系统目录和子目录.

重要的目录:

/

根目录覆盖了所有文件系统的命名空间.

/bin

软连接到/usr/bin目录.这个目录存储了标准系统命令的二进制文件.

/dev

逻辑设备名的主目录.目录的内容是指向/device目录下的设备文件的符号连接.

/etc

这个目录保存了主机指定的配置文件和系统管理的数据文件.

/export

一般共享文件系统的默认目录,如用户的home目录,应用软件和其他共享文件系统.

/home

用户home目录的默认目录或挂接点.

/kernel

平台独立的可加载的kernel模块目录,是引导过程必须的部分

/lib

此目录的内容是共享可执行程序和SMF可执行程序(SMF=service Management Facility)

/mnt

文件系统的便利,临时的挂接点.

/opt

为附加应用包设立的默认目录和挂接点.

/platform

平台依附于可加载kernel模块的目录

/sbin

包含实质可执行的单用户bin目录,在手工系统故障恢复和引导过程中被使用.

/usr

这个目录包含程序,脚本和被所有系统用户使用的库文件.

/var

这目录是可变文件的目录,通常包括临时文件,日志文件和状态文件.

Solaris 10,根据SMFZones的介绍,/var目录结构比之前的版本更大.

/var目录有足够的磁盘空间去存储软件包的信息,日志文件和spool文件等是很重要的事情.

 

2. 重要的内存系统目录的介绍

下面列出在Solaris 10操作系统中的一些重要的内存系统目录和子目录.

内存系统目录:

/dev/fd

这目录包含指定文件,这些文件是关于当前被系统使用的文件描述.

/devices

物理设备名的主目录.

/etc/mnttab

基于文件的内存,在它自己的文件系统里,包含当前文件系统挂接的细节.

/etc/svc/volatile

这个目录包含日志文件和参考文件,这些文件涉及到当时系统服务的状态.

/proc

这目录存储了当前相关进程的信息,每个进程在/proc目录下都有它自己的子目录.

/system/contract

CTFS(contract file system)合同文件系统,是创建,控制和观察合同的接口.一个合同提高了进程和进程依赖的系统资源间的关系,这是通过提高更富有的错误报告和延迟删除资源的方法.

SMF使用进程合同跟踪组成一个服务的进程,以致于一个部分的多进程服务的失败,可能被标识为那个服务失败.

合同文件系统支持所有SMF服务.

/system/object

OBJFS(object file system)描述了当前被内核装载的所有模块的状态.这个文件系统用来被调试器使用访问关于内核符号连接信息而不需要直接访问内核.它主要用于激活Dtrace.

/tmp

临时文件目录.这个目录在引导时被清除掉.

/var/run

这个目录包含锁文件,指定文件,参考可变系统进程和服务的文件.

Note:这些内存目录被内核和系统服务所维护.用户不能从这些目录中试图手工创建,改变或者删除文件.

 

下面列出在关键目录下的主要子目录.

/dev目录下主要子目录:

/dev/dsk

块磁盘设备

/dev/fd

文件描述

/dev/md

后磁盘的逻辑卷管理

/dev/pts

虚拟终端设备

/dev/rdsk

裸磁盘设备

/dev/rmt

裸磁带设备

/dev/term

串口设备

 

/etc目录下的主要子目录:

/etc/acct

帐户系统的配置信息

/etc/cron.d

Cron工具的配置信息

/etc/default

各种程序的默认信息

/etc/inet

网络服务的配置文件

/etc/init.d

启动和停止服务的脚本

/etc/lib

/usr文件系统不可用时,动态连接库是必须的.

/etc/lp

打印机子系统的配置信息

/etc/mail

邮件子系统的配置信息

/etc/nfs

NFS服务日志的配置文件

/etc/opt

可选包的配置信息

/etc/rc#.d

当进入或离开一个指定的运行级别时,Legacy脚本被执行

/etc/security

RBAC(Role Based Access Control)的控制文件和安全优先级

/etc/skel

新用户帐户的默认shell初始化文件

/etc/svc

SMF数据库和日志文件

/etc/zones

Solaris 10 OSZones的参考文件和初始化

 

/usr目录的内容:

/usr/bin

标准系统命令

/usr/ccs

C编译程序和库文件

/usr/demo

实例程序和数据

/usr/dt

目录或CDE(Common Desktop Environment)软件的挂执着点

/usr/include

头文件(C语言等等)

/usr/jdk

包含JAVA技术程序和库文件的目录

/usr/kernel

平台独立可加载的内核模块,这些模块在引导程序中一般不需要的.

/usr/lib

体系结构依赖的数据库,各种程序库和不直接被用户调用的二进制

/usr/opt

可选包的配置信息

/usr/sbin

系统管理命令

/usr/spool

符号连接到/var/spool目录

 

/var目录下的主要子目录:

/var/adm

日志文件(如系统日志,系统帐户等)

/var/crash

存储在遭遇系统故障之后的垃圾文件,Help Desk员工可以从这个目录去分析并决定系统故障的原因.

/var/spool

Spool文件(如邮件,打印服务等)

/var/svc

SMF控制文件和日志

/var/tmp

通过系统重启时长期存储的临时文件,/tmp的可选目录.

 

二、文件组成的介绍

Solaris OS中所有文件所使用文件名和记录被称作为节点.大多数文件也使用数据块.通常每个文件名有着一个相应的节点,同时节点提供数据块的访问.

1. 文件名

文件名是许多通常用于访问和操作文件的目标.一个文件必须有一个文件名以及相应的节点.

 

2. 节点

节点是Solaris OS使用关于文件的记录信息的目标.通常节点包含两部分.第一,节点包含关于文件的信息,包括它文件所有者,文件的权限和文件的大小.第二,节点包含了文件所对应的数据块的指针.

节点是一些数字,同时文件系统包含了它自己的节点列表.当一个新文件系统被创建时,在那文件系统中新节点列表也被创建完成.

 

3. 数据块

数据块是用于存储数据的磁盘空间单元.正常的文件,目录和符号连接使用数据块.设备文件不保留数据.

 

三、认识文件类型

Solaris OS支持可以在几乎所有基于UNIX操作系统发现的标准文件类型.通常文件提供存储数据,活动设备,允许交互式处理通信的方法.Solaris OS中存在着不同文件类型,主要有4种类型:

l          正常的或者一般文件

l          目录

l          符号连接

l          设备文件

 

正常文件,目录和符号连接用于存储一种或多种数据类型.设备文件并不存储数据,而设备文件提供设备的使用权限.

使用ls命令可以区分不同的文件类型之间的区别.ls –l命令的第一列字符信息是显示文件类型的.

Sun Ultraworkstation为例,显示部分目录列表,这个目录下包含各种不同的文件类型:

#cd /etc

#ls -l

total 573

drwxr-xr-x        2   adm    adm     512  Sep 19 17:21   acct

lrwxrwxrwx       1   root    root       14  Sep 19 16:00   aliases ->./mail/aliases

drwxr-xr-x        7   root    bin       512  Sep 19 17:55   apache

drwxr-xr-x        2   root    other     512  Sep 19 16:59   apoc

-rw-r--r--         1   root    bin       194  Sep 19 15:55    auto_home

(output truncated)

 

# cd /devices/pci@1f,0/pci@1,1/ide@3

# ls -l

total 4

drwxr-xr-x        2   root   sys        512     Sep 19 20:13    dad@0,0

brw-r-----         1   root   sys        136, 8  Sep 23 08:35    dad@0,0:a

crw-r-----         1   root   sys        136, 8  Sep 23 12:51    dad@0,0:a,raw

(output truncated)

 

在第一列的第一个字符显示了每个文件的类型,如下:

-      正常文件

d     目录

l      符号连接

b     指定块的设备文件

c     指定符号的设备文件

 

1. 普通文件

或许在Solaris OS中发现大多数普通文件类型都是普通文件,这些文件能够使用户存储许多不同的数据类型.普通文件可以支持ASCII码文本和二进制数据,包括图像数据,数据库数据,相关应用数据,等等.

有许多种方式建立普通文件.,用户可以使用vi编辑器去创建一个ASCII文本文件,或使用编译器去创建一个包含二进制数据的文件.再如,用户可以使用touch命令去创建一个新的空的普通的不存在的文件.

 

2. 目录

目录存储关联带有节点号的文件名的信息.不同于普通文件,它可以支持许多不同数据类型,目录.仅支持文件名到节点的关联.

目录包含所有文件的入口,这个文件理论上归属于那个目录.

 

3. 符号连接

符号连接是一个文件,它指向于另一个文件.和目录一样,它包含仅目录信息,符号连接包含仅一种数据类型.

符号连接包含了它所指向的文件的路径名.因为符号连接使用路名指向于另一个文件,它们可以指向于其他文件系统的文件.

符号连接的大小通常匹配于它所包含的路径名的字符的数据.

在下面的例子中,符号连接被称作/bin指向于目录./usr/bin.符号连接的大小是9byte,因为路径名./usr/bin包含9 characters.

# cd /

# ls -l bin

lrwxrwxrwx       1      root    root    9    Sep 19 15:41    bin -> ./usr/bin

符号连接可以指向于普通文件,目录,其他符号连接和设备文件.它们可能使用绝对的或者相对的路径名.

ln –s 是创建符号连接.

#ln –s file1 link1

符号连接直接进行它们所指向的读写文件操作.

 

4. 设备文件

设备文件提供设备的访问权限.不同于普通文件,目录和符号连接,设备文件并不使用数据块.而是使用设备相关的数字的节点信息.使用ls –l命令显示这些数字.

举例,普通文件在第五个区域输出显示文件的大小.

# cd /etc

# ls -al |more

total 599

drwxr-xr-x   77   root   sys    4096    Sep 23 08:36   .

drwxr-xr-x   26   root   root   1024    Sep 23 08:40   ..

-rw-r--r--     1   root   root   2236    Sep 23 08:36   .cpr_config

drwxr-xr-x    3   root   bin     512    Sep 19 16:39   .java

-rw-r--r--     1   root   sys     524    Sep 19 15:41   .login

-rw-r--r--     1   root   other    18    Sep 19 16:30   .sysidconfig.apps

-rw-r--r--     1   root   other   284    Sep 19 16:00   .sysIDtool.state

(output truncated)

 

设备文件的长列表中显示了两个数字,用逗号分隔,这个文件的大小详细正常显示.这两个数字被称作主要和次要设备号.在下面的例子中,设备文件dad@0,0:a引用主要设备号136和次要设备号8.

# cd /devices/pci@1f,0/pci@1,1/ide@3

# ls -l dad@0*

total 4

drwxr-xr-x    2         root       sys               512        Sep 19 20:13      dad@0,0

brw-r-----     1         root       sys               136, 8    Sep 23 08:35      dad@0,0:a

crw-r-----     1           root       sys               136, 8    Sep 23 12:51      dad@0,0:a,raw

brw-r-----     1           root       sys               136, 9    Sep 23 08:35      dad@0,0:b

crw-r-----     1           root       sys               136, 9    Sep 23 12:51      dad@0,0:b,raw

brw-r-----     1          root       sys               136, 10  Sep 23 12:51      dad@0,0:c

crw-r-----     1           root       sys               136, 10 Sep 23 12:51      dad@0,0:c,raw

(output truncated)

 

四、使用硬连接

这部分定义硬连接及描述如何去使用他们.

1. 硬连接的介绍

硬连接是关联于文件名和节点之间的.硬连接并不是分离的文件类型.每个文件的类型至少有一个硬连接.每个目录的入口组成一个硬连接.考虑每个文件名作为硬连接于一个节点.当你建立一个文件,使用touch命令,,一个新的目录入口被创建,连接于你所指定的部分节点的文件名.这样,建议一个新的文件创建一个硬连接.

# cd dir1

# touch file1

# ls -l

total 0

-rw-r--r-- 1 root root 0 Sep 23 13:19 file1

上面例子,文件称作file1,使用一个硬连接.

 

2. 创建新的硬连接

在相关联的节点中为文件名创建一个新的硬连接的连接数.

在下面的例子,节点1282现在有两个硬连接,一个是file1,另一个是file2. ls –li命令在左边栏列出节点号,find –inum命令定位于相同节点号的文件和目录

# ln file1 file2

# ls -l

total 0

-rw-r--r--       2     root       root       0     Sep 23 13:19      file1

-rw-r--r--       2     root       root       0     Sep 23 13:19      file2

# ls -li

total 0

1282      -rw-r--r--       2     root       root       0     Sep 23 13:19      file1

1282      -rw-r--r--       2     root       root       0     Sep 23 13:19      file2

# find . -inum 1282

./file1

./file2

ln命令创建新的硬连接到普通文件.

 

3. 删除硬连接

删除其中一个文件对另一个文件并不影响.因此连接的数量也跟着减少.

下面例子显示如何从前一个例子中删除file1file2并没有影响.

# rm file1

# ls -li

total 0

1282      -rw-r--r--       1     root       root       0     Sep 23 13:19      file2