file命令
file命令对文件作一系列的测试,然后会试图对文件归类。这个命令在判断一个命令是一个shell脚本还是一个二进制的可执行文件时有用。 例子:
# file /sbin/shutdown
/sbin/shutdown : s800 shared executeable # file /sbin/rc /sbin/rc: ascii text
strings 命令
strings命令可以找出一个二进制文件中的可用信息,它会在屏幕上显示出文件中的任何可以打印的字符。
配置设备文件
目标
学完这一章,你将能够做以下事情:
? ? ? ? ? ? ? ? ? ? ?
解释设备文件的用途 解释主号和次号的意义
描述块设备和字符设备的不同
使用lsdev来列出内核驱动程序的主号 使用ls -l观察一个设备文件的主号和次号
使用ioscan列出与一个指定设备关联的设备文件 使用issf来说明一个设备文件的特征。
赋予磁盘,磁带,或者CD设备文件名,确定控制卡的目标号和关联设备的目标地址
赋予一个终端或者一个modern设备文件名,确定控制卡号和关联设备的端口号。 描autoconfig进程的工作原理 使用insf创建设备文件
设备文件是什么?
操作系统与外部设备(例如,磁带驱动器,磁盘驱动器,打印机,终端,modern)是通过一种被称为设备文件的文件来进行通信。unix输入输出到外部设备的方式和输入输出到一个文件的方式是相同的。在UNIX 同一个外部设备进行通讯之前,这个设备必须首先要有一个设备文件存在。例如,每一个终端都有自己的设备文件来供UNIX写数据(出现在终端屏幕上),和读取数据(用户通过键盘输入)。
设备文件和普通文件不一样,设备文件中并不包含任何数据。
操作系统通过设备文件来与一个设备进行通讯。设备文件存在于/dev目录下。 注意:设备文件与特殊文件是同义词。你可以互换这两个术语。
由于UNIX操作系统为你创建所有的设备文件,所以在你存取一个外部设备的时候,你需要知道这个设备对应的设备文件名。有时候你会需要自己创建一个设备文件。如果你永久地去掉一个外部设备,你应该删除它对应的设备文件。 以下的例子说明了UNIX命令如何使用一个设备文件: #tar -cvf /dev/rmt/0m /usr
tar应用使用-f选项来打开一个文件以供输出。然后tar会备份数据到那个文件。tar可以写到一个普通文件或者直接写到一个设备。tar并不需要知道它们之间的不同。
# echo hello > /dev/tty0p1
在这个例子中,echo命令的标准输出通过被重定向到一个终端,其方式是通过这个终端的设备文件
使用ls -l列出设备文件
使用ls -l /dev列出设备文件名
brw-r----- 1 root sys 31 0x005000 Feb 10 1997 /dev/dsk/c0t5d0 brw-r----- 1 root sys 31 0x006000 Feb 10 1997 /dev/dsk/c0t6d0 crw-r----- 1 root sys 31 0x005000 Feb 10 1997 /dev/rdsk/c0t5d0 crw-r----- 1 root sys 31 0x006000 Feb 10 1997 /dev/rdsk/c0t6do crw-r----- 2 root tty 17 0x000001 Jan 9?09:25 /dev/ttyp1
crw-r----- 2 root tty 17 0x000002 Jan 9?17:25 /dev/ttyp2 设备文件类型 ????主号 次号 ????????设备文件名
设备文件通常都是在/dev目录下。你可以使用ls -l命令来列出这个目录下的文件,就像你列出其它目录下的文件一样。注意:ls -l列出的设备文件和其它文件有一点点的不同。 设备文件类型
设备文件名的第一个字符指明了这个设备文件的类型。
字符设备文件:?第一个字符为“c\ 字符设备文件传送数据给设备的时候,一次传送一个字符。终端,打印机,绘图仪,modern等设备是一些典型的经过字符设备文件传送数据的设备。字符设备文件有时也被称为“raw” 设备文件。
块设备文件: ??第一个字符为“b”的设备文件是一个块设备文件。系统通过块设备文件存取一个设备的时候,先从内存中的buffer中读或写数据。而不是直接传送数据到物理磁盘。这种方式能有效的提高磁盘和CD-ROMS的I/O性能。 终端,moderms,打印机,绘图仪和磁带设备是典型的只能使用字符设备文件的设备,磁盘和CD-ROMS既可以使用字符设备文件也可以使用块设备文件。 一些应用程序和工具选择使用字符设备文件直接存取磁盘。而其它工具要求使用一个块设备文件。阅读应用或者工具的说明文档来决定使用那一种设备文件。 设备文件主号
每一个设备文件都有一个“主号”,使用ls -l命令输出的内容的第五个字段即为主号。主号是表示系统存取这个设备的“内核驱动” 。内核驱动是UNIX内核中的一部分代码,其作用是用来控制一种特殊的设备的输入输出。大多数的unix操作系统都有多种设备驱动程序;每一个设备文件名中的设备主号就代表这个设备使用的是那个设备驱动程序。lsdev命令可以列出你的内核中配置的驱动程序,和这些驱动程序对应的主号。 设备文件次号
每一个设备文件都有一个次号。“次号”是一个24位的十六进制数字,其定义了:
这个设备在系统中的物理的位置。
设备存储选项。例如磁带,磁带有特殊的存取选项,使用/不使用硬件压缩,和定义写到磁带上的数据格式密度等。 设备文件名
设备文件名遵循一个标准的命名的约定。这种约定使分辩那一个设备文件关联那一个设备变得很容易。以下的章节会讨论命名规则的细节。
使用ioscan列出设备文件名
# ioscan -fun ???列出所有的设备和对应的设备文件名 # ioscan -fun disk ?列出所有的磁盘设备和设备文件名
# ioscan -funC tape ?列出所有的磁带设备和磁带设备文件
虽然ls -l命令可以列出你的系统中的设备文件。但是它没有指明那一个设备文件对应那一个设备。
ioscan -fun命令提供了一种方便的机制来找到设备文件对应系统中的硬件的路径。在每一个硬件路径下,ioscan -fun列出了与每一个硬件路径相关联的设备文件。由于一些设备有多个存取选项,ioscan可以列出一个设备对应的多个设备文件。 例子:
#ioscan -fun??????????列出所有的设备和设备关联的设备文件名 # ioscan -funC disk ?????? 仅列出磁盘类的设备和关联的设备文件名 #ioscan -funC tape ???????仅列出磁带设备和关联的设备文件名 #ioscan -funH 2/0/1.6.0 ???? 仅列出在2/0/1.6.0位置的设备的设备文件名
使用lssf列出设备文件
? ?
列出设备文件的特征 语法:
??/usr/sbin/lssf path [pah -] ?
例子:
??# lssf /dev/rdsk/clt6d0
??disc3 card instance 1 scsi target 6 scsi LUN 0 ??section 0 at address 52.6.0 /dev/rdsk/clt6d0 ??# lssf /dev/rmt/0mn
??tape2 card instance 1 SCSI target 0 SCSI LUN at@t no ??rewind best density available at address 52.0.0 /dev/rmt/omn
许多设备有多个相关联的设备文件。例如,上例中的磁带设备有八个设备文件。这是因为许多设备可以使用不同的存取选项来存取。每一个设备文件代表一个存取选项。
ioscan列出每一个设备的设备文件,但是不指明设备文件对应那一个设备。lssf命令可以选择用来判断每一个设备文件的特征。lssf 告诉你: 这个设备文件使用的哪一个驱动程序 设备的硬件地址信息
任何设备文件使用的设备存取选项。 问题:
我们已经有三个命令可以用来浏览设备文件:ls -l,lssf,和ioscan。请判断在以下情况下应该使用那个命令:
1.列出硬件地址为2/0/1.1.2的磁带驱动器的设备文件。 2.列出所有的磁盘设备文件。
3.那一个命令可以用来判断通过设备文件/dev/rmt/c0t0dBESTnb存取的硬件路径。
4.那一个命令可以告诉你设备文件/dev/rmt/c0t0d0BESTnb的设备选项是什么。