LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
楼主: AMD处理器

[推荐]UNIX 系统(3月30日更新 请勿灌水。谢谢!)

[复制链接]
 楼主| 发表于 2005-4-30 17:46:41 | 显示全部楼层
[推荐]使用网络服务
第十一章:使用网络服务
目标
完成这一章,你能够做以下事情:
描述UNIX中不同的网络服务
理解局域网(LAN)的功能
找出本地主机的主机名和局域网中其它系统的主机名。
使用ARPA/Berkeley服务来执行远程登录,远程文件传输,和远程命令执行。
11.1 局域网是什么?
局域网(LAN)是在一个小的区域中连接两台或者多台计算机。在LAN中通常安装有超过一台的计算机,以便让用户可以同时在不同的计算机上工作,而不用在他们想要使用的不同的计算机之间跑来跑去。
我们这章讨论的LAN服务是一些程序,这些程序可以让你使用LAN在不同的计算机之间执行许多的操作。这些操作有:
从一个计算机拷贝文件到另一个。如果没有LAN,你只能用磁带拷贝你的文件。然后走到另外一台计算机,然后重新读取磁带。
在本地计算机上通过一个终端登录另外的计算机。如果没有LAN, 通常你只能走到哪个计算机的终端来进行登录。
在另外的计算机上执行命令,在本地观察结果。同样,如果你没有LAN,你只能到另外的计算机去执行命令。
在远程计算机上存取文件,这意味着我们可以使用另外计算机上的磁盘,而不用将文件拷贝到本地磁盘上。
11.2 LAN服务
在这一节,我们会了解有两组不同的服务可以让我们使用基本的LAN功能。这些服务是:
ARPA 服务
Berkeley 服务
ARPA服务最早是Defense Advaced Research(DARPA)在60年代初期定义的。这些服务成为通过单个LAN连接许多不同种类计算机的一个标准。我们要讨论的ARPA服务有telnet,和ftp。
DARPA雇用Berkeley学院的Bolt,Baranek和Newman来开发这些服务。在70年代中期,Berkekey大学开始使用新的 UNIX操作系统上。他们最终开发出一套更健壮的服务,用在运行UNIX操作系统的计算机之间。这些服务现在被叫做Berkeley服务。我们在这章会介绍rcp,rlogin和remsh等Berkeley服务。
11.3 hostname命令
语法:
hostname 报告你的计算机在网络上的名称
例子:
$ hostname
fred
$
$ more /etc/hosts
192.1.2.1    fred
192.1.2.2    barney
192.1.2.3    wilma
192.1.2.4    betty
你的计算机有一个主机名。这个主机名被用于在LAN上识别你的系统。要查看你的主机名,可以使用hostname命令。
$ hostname
fred
如果你想要同LAN上的其他计算机通信,你必须知道它的主机名。你可以向你的系统管理员询问其他的计算机的名字。如果你在你想要工作的主机上有一个用户帐号,你也可以登录上去自己检查主机名。
注意:想要使用任何LAN服务,你必须是远程主机的一个有效的用户。
你同样可以在文件/etc/hosts中找到主机名。然而,如果你的LAN的规模很大(如有几百台主机),这个文件会包括几百个主机名。
11.4 telnet 命令
语法:
telnet hostname ARPA服务,来远程登录另外的计算机。
例子:
$ telnet fred
Trying.....
Conneted to fred
Escap character is ‘^]’.
HP-Ux fred 10.0 9000/715
Login:
telent 是ARPA 服务中的远程登录的软件。
如果你键入命令:
$ telnet hostname
你会在你的屏幕上看到名称为hostname的计算机的登录提示符。然后你可以输入你在那台计算机上的用户名和口令,然后你就能登录那台计算机。
一旦你登录进了那台计算机,你的终端看上去就像是远程计算机上的终端一样。你能运行shell命令或者程序,甚至使用远程计算机上的打印机。你做的所有的工作都是在远程计算机完成的。你本地的计算机只起到一个信息传递的作用。
想要关闭telnet 联接,可以使用ctrl + d 或者exit从远程计算机退出即可。
11.5 ftp 命令
语法:
ftp hostname     一种ARPA服务,用来从本地计算机拷贝文件到远程计算机或者从远程计算机           拷贝文件到本地计算机。
ftp 命令:
get 从远程计算机获得文件
put 将本地文件送到远程计算机
ls 列出远程计算机上的文件
? 列出所有的ftp命令
quit 退出ftp
想要使用ARPA服务,在本地和远程计算机之间拷贝文件。使用ftp命令。ftp代表文件传送协议。像telnet 一样,你必须指定远程计算机的主机名。
$ ftp hostname
ftp 会提示你输入你在远程计算机上的用户名和口令。这要求你在远程计算机上设置有一个口令。一旦你输入的登录信息正确,你就可以连接到hostname上。
在你看到ftp>提示符的时候,你可以使用ftp命令来进行你的工作。这里是一些普通的ftp命令:
get rfile lfile        拷贝远程计算机上的rfile到本地计算机上的lfile,你也可以使               用全路径名
put lfile rfile        拷贝本地计算机上的lfile到远程计算机的rfile。
Ls              列出远程计算机上的文件,这个ls同我们用过的ls 命令相似。
Help command         显示一个关于命令的简短的帮助信息。
Quit             断开同远程计算机的联接,退出ftp。
11.6 rlogin 命令
语法:
rlogin hostname     一种Berkekey 服务,用来远程登录计算机;rlogin会试图使用你本地             的用户名登录远程计算机。
例子:
$ hostname
barney
$ rlogin fred
passwd:
$ hostname
fred
$ exit
$ hostname
barney
rlogin 命令的功能与telnet 命令类似。如果你键入:
$ rlogin hostname
你会自动登录到名字为hostname 的系统上。rlogin假定你登录远程主机的用户名同你登录本地主机的用户名一样。所以,它不会提示你输入你的用户名。
如果你的系统管理员已经配置好一个/etc/host.equiv的文件,rlogin不会提示你输入密码。这会使使用变得非常快捷和方便。同样你可以在你的HOME目录创建一个叫做.rhost的文件,这个文件会让你远程登录不需要输入密码。
同telnet相似,简单的退出指令就可以中断同远程主机的连接。
11.7 rcp 命令
语法:
rcp source_pathname target_pathname   一种Berkeley服务,让你可以从远程主机拷贝或者                       拷贝文件到远程主机;使用起来同cp命令类似。
例子
$ rcp funfile fred: /tmp/funfile
$
rcp 代表远程拷贝。这是因为它的运行同cp命令类似。它可以运行在两个运行Berkeley服务的计算机之间。这个命令的一般的格式为:
$ rcp host1: souce host2:dest
这些命令的参数意味着拷贝host1上的source文件到host2上的dest文件。source和dest同样能是全路径名。
如果你在本地主机拷贝文件到远程主机或者从远程主机拷贝文件到本地主机,你可以不使用本地主机名和冒号,
例如:
拷贝本地主机上的funfile文件到远程主机fred上的/tmp/funfile
$ rcp funfile fred: /tmp/funfile
拷贝主机fred上的/tmp/funfile到主机barney上的/tmp目录下:
$ rcp fred:/tmp/funfile barney: /tmp
所有的cp命令的规则同样适用于rcp命令。
注意: 在使用rcp 命令工作的时候,/etc/hosts.equiv或者.rhost文件必须被正确设置,否则rcp命令不会工作。
11.8 remsh 命令
语法:
remsh hostname command     一种Berkeley服务,可以在远程主机上运行命令
例子:
$ hostname
barney
$ remsh fred ls /tmp
backuplist
crout0qd00076
fred.log
updat.log
$ ls
EX000662 tmpfile Update.log
$
remsh 允许你在远程主机上运行程序,在本地终端上看结果。这个命令的格式为:
$ remsh hostname comand
例如,如果你想要看在fred主机上正在运行的进程,你可以执行:
$ remsh fred ps –ef
列出fred的/tmp目录下的文件:
$ remsh fred ls /tmp
fredfile
funfile
reconfig.log
update.log
或者,如果你想要浏览fred主机上的/etc/hosts文件:
$ remsh fred cat /etc/hosts | more
注意:cat /etc/hosts 是唯一再fred上执行的命令。命令的输出到我们的终端,输出通过管道送到more。
你同样能使用remsh来使用联接在另外主机上的打印机打印文件。
注意: 在remsh 命令工作的时候,/etc/hosts.equiv或者.rhost文件必须被正确设置,否则命令不会工作。
11.9 rwho命令
rwho 产生的输出同who类似。
rwho显示LAN中运行rwho守护进程的主机上的用户。
例子:
$ rwho
user1 barney:tty0p1 Jul 18 8:23 :10
user2 wilma:tty0p1 Jul 18 10:13 :03
user3 fred:tty0p1 Jul 18 11:32 :06
rwho 命令同who命令类似,但是这个命令会查找所有的在你的LAN中运行rwho守护进程的主机上的用户。
11.10 Berkeley- ruptime 命令
ruptime 显示LAN中的每一台主机的状态
每一个主机必须运行rwho守护进程。
例子:
$ ruptime
barney up 3:10 1 users load 1.32 , 0:80, 0:30
fred up 1+5:15 4 users load 1.47, 1.16, 0.80
wilma down 0:00
ruptime 命令可以显示LAN中系统的状态,是up还是down,当前有多少用户在运行,和机器任务的信息。
如上例所示:
fred 处于up状态
fred已经运行了一天零五小时零15分钟。
Fred当前有四个用户登录
最近1分钟,平均1。47个任务运行。
最近5分钟,平均1。16个任务运行
最近15分钟,平均0.80个任务运行
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-4-30 17:49:56 | 显示全部楼层
[推荐]存储介质
第十二章:存储介质
存储介质
在UNIX系统中,文件的存储借助于存储介质,如磁盘,软磁盘,光盘等而得以存储的。因此在UNIX系统中。掌握如何有效地对存储介质加以使用,是一项非常重要的技术。
学完这一章,你将能够做以下事情:
如何查看系统中存储空间的使用情况。
如何在软盘,磁带这类设备上生成文件系统。
存储空间的使用情况
在建立好一个文件系统并使之可用之后。随着用户在其上新建文件、修改文件或者删除文件,该文件系统的空闲inode数、空闲数据块等会相应地减少或者增多。如果文件系统的空闲空间减少到一定的程度,系统响应速度会大幅度下降甚至无法工作。这时,就需要对各文件系统的使用情况进行调查,然后采取相应的对策。
1.文件系统空闲情况的统计
在文件系统中,索引节点数和数据块数是两个至关重要的参数。当某个文件系统索引节点或数据块全部被占满是,将无法在在此文件系统上建立任何文件。这是一件比较可怕的事。为了使用户能方便地了解系统中每个文件系统中还剩下多少可用的索引节点和数据块,系统为我们提供了df命令。
df命令为disk free的缩写。df可以单独使用,也可以带参数。具体使用你可以参考联机帮助。
2.磁盘空间占用情况
在文件系统满了或者我们希望得知某个目录或文件对文件系统存储空间的使用情况时,可以使用du命令。
du命令为disk usage的缩写。在使用这个命令时可以指定一个或多个目录,如:
$ du /home/yxz
2     /home/yxz/Unix.dir
10    /home/yxz
$
使用上述命令,就能查出系统中某个用户占用了多少磁盘空间(假定用户只能在他的HOME目录下建立文件)。
如果没有指定文件或目录名的情况下,du将显示当前目录占用的磁盘空间的情况。显示出的信息中包含有指定目录下所有的各个子孙目录,磁盘空间的使用情况。若要得知每个子目录及文件的信息,可以加上-a选项。
若只想知道指定的目录占用磁盘空间的总数,可以使用-s选项。
还有一些其它的选项可以参考联机帮助手册。
用户占用文件系统空间的统计
系统中的每个文件都有相应的拥有者。在某些情况下我们需要知道在某个文件系统上,每个用户各占用多少存储空间。为此可以使用quot命令。
quot是quotient的缩写。它可接受一个文件系统名(块设备文件名)作为参数,然后统计出在该文件系统中建立有文件的各个用户所占用的磁盘块的数目。如:
# quot /dev/dsk/0s4
/dev/dsk/0s4:
82883  sybase
 340  vmsys
158   yxz
28    oasys
14   root
2    xyz
3    yxz
1    install
注意,此命令只能供超级用户使用。
存储介质上的文件系统
文件系统的物理基础就是系统所使用的各种存储介质,如磁盘、软盘,CD-ROM、磁带,等等。
UNIX对其各种存储设备用一种统一的方法对待,那就是每个物理设备都是文件系统中的文件。当然这种文件比较特殊,被称为设备特殊文件(Device Special File),这些文件被组织在文件系统树的/dev目录下。
本节将介绍UNIX如何组织各种存储设备;如何对这些设备进行初始化(格式化);以及如何将特定设备上的文件系统“挂接”到系统的文件系统树上,以及如何将其从文件系统树上“摘下来”。
存储介质的组织方式
每一种特性的物理设备在文件系统中都占据有一个相应的节点,即具有一个文件名称。这里介绍UNIX是如何组织硬盘、软盘、磁带、CD-ROM这些常用的存储设备的。
1.硬盘的组织
我们知道,硬盘时一种块设备。也就是说,它每次同其它设备的数据交换均是以一个数据块(通常为512字节)为单位的。这样硬盘的存储空间也就是从0号块到最大块号。例如一个1GB的硬盘上,将会有2M个数据块。其编号将是从0至2的21次方-1。
对一个硬盘,可以对之进行“分区”操作。在硬盘的各个分区中,只有一个分区是“活动的”。也就是说,接通电源后机器将从活动分区中被引导从而进入相应的操作系统状态。
进行硬盘分区的实用程序是名为fdisk。在那里还可以指定活动分区。由于此命令只能供系统管理员使用,所以在此不做介绍。
每个硬盘分区实际上就相当于一个独立的硬盘。所以在下面的叙述中我们就假定没有对硬盘进行分区。
硬盘在使用前要进行格式化操作。这个操作主要是在硬盘上写上有关存取数据和管理用的信息。不同种类的UNIX,格式化操作的具体内部动作是不一样的。用户不用理会它,格式化好之后,呈现在用户面前的硬盘才是若干编号连续的存储块。下面的问题是如何对这些存储块进行管理了。
我们可以把整个存储空间分成若干个段。每一段内存储块的编号都是连续的。各段首尾相邻,但任何段都不运允许有交叉。(这一操作类似于硬盘的分区)然后可以为每段存储块指定一个名称,系统将用指定的名称在/dev目录下建立一个文件。此时这个文件所表示的就是该段连续的存储空间了。
在对每一个分段命名后,我们就得到相应的设备文件,此时就可以用此设备文件来在相应的磁盘段上建立文件系统了。
2. 软盘、磁带、CD-ROM的组织方式
上述三种存储设备因为其携带方便,易于保存,并且磁带和CD-ROM还具有存储量大(海量存储)的特点,因而在计算机系统中被广泛使用。在UNIX系统中这些设备也被按文件的组织方式加以组织。
但由于此类设备的多样性以及存取格式、存取方式的不同,使得对此类设备的使用也复杂起来。举例来说,对于软盘就有好多种不同的类型,如3.5英寸, 5.25英寸,有高密的,也有低密的,有的软盘上有引导块,有的没有,等等。并且在对它们进行访问的时候,有时不必格式化就可以访问,有些命令则只能访问格式化后的设备。
系统为上述特点进行区分,采取得方法是:对不同存取特征的组合设定不同的设备文件名。在需要按某种特征组合去访问相关介质时,指定相应的设备文件名即可。
对于磁带和CD-ROM等设备,系统对它们的组织方式与软盘类似,也是用不同的名称代表不同的格式的设备。例如在Sun 0S上,用/dev/rmt/? 代表1/2英寸磁带设备,而用/dev/rst/?代表scsi磁带。对于CD-ROM,其名称则是/dev/rdsk/c0t6d0s0。在使用磁带和 CD-ROM时,如果发现用指定的名称不能正确访问数据,那么可换其它格式试试。如果所有的格式都不能完成任务,那么表明系统不支持所用的设备。
存储介质上文件系统的使用
对于软盘,磁带,和CD-ROM地的使用,一种方法就是先在其上生成某种类型的文件系统,然后将该文件系统安装到文件系统树的某个节点三。这样以后我们就能用常规的文件操作命令,如mkdir,rmdir,cp,mv,rm等在相应的存储介质上建立并且存储文件。
1.介质的格式化
软盘、磁带等存储设备在使用之前都要进行格式化操作(CD-ROM由于其只读的特殊性,无需格式化,也无法对之格式化)。格式化的操作的具体内容随 UNIX操作系统的不同而有较大的差异。但总的来说,它们都要在存储介质上的某些存储区域中写入一些操作系统访问该介质所必不可少的管理信息,这之外的那些存储区域才被用来存放用户数据。并且在格式化的过程中,一般还要对存储介质上的存储区域进行校验,看看其中有没有被损坏的地方。
不同系统提供的格式化工具也不尽相同。例如在AT&T UNIX System VR 4.0上的格式化命令为format。
2.介质上文件系统的生成
这里我们所讲述的内容主要也是针对软盘和磁带这些存储介质的。CD-ROM 因为在作好之后,它上面的文件系统实际上也就算是生成了,因此也就不用我们再生成。另外并不是所有的磁带上都可以生成文件系统。
大多数UNIX系统中提供的生成文件系统的命令均为mkfs.mkfs命令要求提供一个裸设备文件名作为参数。并且在命令行中我们还可以指定文件系统的索引节点数和数据块数目。另外债命令行中我们还可以指定所建文件系统的类型。每种UNIX系统支持的文件系统类型的数量也不同,但S5,UFS等这类比较通用的文件系统都还是支持的,读者可以自己看看所用的机器上都支持哪些种类的文件系统。在我们不指定文件系统类型的时候,系统会在指定设备上建立一种缺省的文件系统。
3.文件系统的安装
在一个文件系统建立好之后,还并不能马上就使用它。在使用之前必须先将它“挂接”到系统的文件系统树上某个节点处。这种操作被称为文件系统的安装。具体的细节请看UNIX系统管理的文件系统部分。
4.文件系统的拆卸
具体的细节请看UNIX系统管理的文件系统部分
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-4-30 17:50:59 | 显示全部楼层
[推荐]离线文件存储
第十三章:离线文件存储
目标
完成这一章,你能够做以下事情:
使用tar命令存储文件到磁带上
使用find和cpio存储文件到磁带上。
使用tar,和cpio检索存储过的文件
1 存储文件到磁带
要将文件存储到磁带,首先要知道磁带机对应的设备文件
典型的磁带机设备文件名是:
/dev/rmt/0m      9磁道磁带或者DDS磁带(旧名)
/dev/rmt/c0t3d0BEST  9磁道磁带或者DDS磁带
向你的系统管理员询问磁带机的设备文件名。
执行备份的命令有:
tar
cpio
UNIX系统的用户在很多时候都需要保存文件的备份到一些可移动的介质上。通常备份使用的介质有9磁道的磁带或者DDS格式的数字磁带。这一章会介绍基本的备份数据到磁盘上或者从磁盘检索数据的方法。记住你的系统管理员通常只负责备份整个系统;你应该同你的系统管理员协同进行磁带备份的工作。
注释:要恢复一个被删除的文件的唯一的方法就是从一个备份磁带上恢复数据。
2 tar命令
语法:tar –key [ f device_file] [ file...]
例子:
创建一个备份档案:
  $ tar –cvf /dev/rmt/0m  myfile
从一个备份档案得到一个档案内容列表:
  $ tar –tvf /dev/rmt/0m
从备份档案中提取一个文件
$ tar –xvf /dev/rmt/0m myfile
tar命令将文件存档到磁带。这个命令能存储和恢复磁带上的文件。这些功能是由命令的第一个参数称为key argument来控制的。
有效的key参数有:
c 创建(create)一个新的档案。
x 从档案中提取一个文件
t 打印档案中的内容的列表。
r 在档案的末尾增加文件。
u 如果文件是新的或者修改过的,就添加到档案的末尾。
v 在存档和恢复的时候在屏幕上显示文件名(冗长模式verbose)
f file 指明要创建档案的文件名。注意,这个文件不一定必须是一个磁带的设备文件,你可以在你的磁盘上的目录下创建一个档案文件。如果不指定,其默认值为/dev/rmt/0m
3 cpio命令
两种模式:
cpio –o [cvx]    创建一个档案,从标准输入读取文件列表。档案被写到标准输出。
cpio –i [cdmtuvx]  从一个档案中恢复数据。档案从标准输入读取。
例子:
创建一个你当前目录下的所有文件的存档文件。
  $ find . | cpio –ocv > /dev/rmt/0m
从一个档案文件中恢复所有的文件。
  $ cpio –icdmv < /dev/rmt/0m
这个命令制造文件或是目录的拷贝档案。cpio代表copy input and output。Cpio有两种模式:
-o   制造一个备份。读取标准输入并且拷贝每一个文件到标准输出。
-i   恢复一个备份。读取备份文件并且在磁盘上重新创建文件。
当创建备份的时候,cpio –o命令使用标准输入作为它的文件名的来源,标准输出作为档案的输出。默认的情况是一个文件列表作为标准输入,一个档案文件作为标准输出,你必须指定一个磁带作为一个输出设备,同时必须提供一个需要存储的文件列表,这个列表通常是使用管道通过find命令输出到cpio执行。
要恢复一个档案,使用cpio –i 从标准输入读取这个档案,同时恢复文件内容到你的磁盘上。被创建的文件名依靠这个档案文件被创建时使用的是相对还是绝对的路径名。
同主选项-o,-i一起,我们还可以使用几个其它的选项:
-o   -i                选项功能
-c   -c  写文件头为ASCII码格式(如果同-o一起使用,在-i同样要使用这个选项)
-   -d  在需要时,重新建立目录结构
-   -m  保留当前修改的数据。(在版本控制时,十分有用)
-   -t  显示备份档案的内容列表
-   -u  无条件恢复(如果文件已经存在,这个选项会覆盖这个文件
-v   -v  显示被拷贝的文件的一个列表
-x   -x  处理特殊的设备文件
其他例子:
获得档案内容的列表:
$ cpio –ict < /dev/rmt/0m
恢复单个文件:
$ cpio –icudm “filename” < /dev/rmt/0m
恢复所有同模型匹配的文件:
$ cpio –icudm ‘ filename*’ < /dev/rmt/0m
关于find命令
find命令可以和备份命令一起使用,其作用是产生需要备份的文件的文件名列表。注意,find可以产生一个相对路径的列表(find .)和一个绝对路径的列表(find /home/user3)。产生文件名列表的方式会决定文件名存储在磁带上的方式。
语法:
find path-list [expression]
expression 支持许多关于搜索条件的关键字。想要知道细节,请使用man来查找联机帮助。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-4-30 17:52:13 | 显示全部楼层
[推荐]进程控制
第十四章:进程控制
目标
完成这一章,你能够做以下事情:
使用ps命令
在后台运行进程 ,并且使用ps命令监视正在运行的进程的状态
运行一个后台进程并使其在你退出系统后不被挂起。
切换后台进程到前台运行。
挂起一个进程。
停止进程的运行。
19.1 ps 命令
语法:
ps [-efl] 报告进程的状态
例子:
$ ps
PID TTY TIME COMMAND
1324 ttyp2 0:00 sh
1387 ttyp2 0:00 ps
$ ps –ef
UID PID PPID C STIME TTY TIME COMMAND
Root 0 0 0 Jan 1 ? 0:20 swapper
Root 1 0 0 Jan 23 ? 0:00 init
Root 2 0 0 Jan 23 ? 0:16 vhand
User3 1324 1 3 18:03:21 ttyp2 0:00 -sh
User3 1390 1324 22 18:30:23 ttyp2 0:00 ps –ef
系统中每个进程在启动的时候都会被分配一个唯一号码,这个号码就叫进程ID(PID)。ps 命令可以显示当前运行中(或睡眠中)的进程的信息,包括每个进程的PID和每个进程父进程的 PID(PPID)。通过PID和PPID号,你可以追踪到你系统中任何进程的起源。ps命令也会报告每个进程的属主和进程是在哪个终端上执行的。
ps 命令可以不带参数执行,结果会报告你当前的终端会话线索的进程信息。 -e选项会报告系统中每一个进程的信息,而不仅仅是你自己运行的进程信息。 -f 和-l选项会报告长的(long),或完全的(full)包含其他的细节的列表。
注意:ps 命令执行时会集中使用CPU,你也许已经注意到当这个命令执行的时候要过一会才有响应
19.2 后台进程
语法:
命令>cmd.out &
例子:
$ grep user * > grep.out &
194
$ ps
PID TTY TIME COMMAND
164 ttyp2 0:00 sh
194 ttyp2 0:00 grep
195 ttyp2 0:00 ps
命令> cmd.out &
使命令在后台执行。
当后台任务开始后立刻返回提示符。
重定向命令的输出,这样命令的输出就不会影响当前屏幕的显示。
退出系统会中止后台运行的进程。用户会在第一次试图退出时收到一个警告:“There are running jobs”。用户必须再次键入Exit 或ctrl+d来中止这个线索。
一些命令可能会执行很长的时间,例如在全部的磁盘上查找单个文件,或使用一个文本处理工具来格式化和打印一个手册。UNIX操作系统允许你启动一个很消耗时间的程序,并且在让它在后台运行。在后台,UNIX会让这个程序继续执行。和其他的立即执行的命令不同的是,shell不会等待后台程序执行完毕立即就会返回提示符,这样你就可以继续其它的工作。
在一个命令的末尾使用一个“&”符号可以使一个命令在后台运行。通常需要重定向后台运行的程序的输出,以免后台命令的输出影响你当前的终端线程。如果没有重定向输出,后台命令会使用标准输出,也就是会输出到你的终端上。
由于shell控制标准输入,而后台运行的命令不能够从标准输入接收数据,因此,任何后台运行的命令要求输入都必须使用输入重定向从一个文件得到输入数据。
当一个命令被放在后台执行,如果设置了monitor选项(set -o moniotr),shell会报告命令的任务号和进程ID,任务号定义了与你终端线索相联系的任务。进程ID为UNIX分配给每一个被执行的进程的唯一的号码。Monitor选项会导致在后台进程完成之后会在终端上显示一条信息:
[1] + Done grep user * > grep.out & 提示进程执行完毕
由于在后台运行的命令不和键盘通信,所以你不能够通过中止键:ctrl + c来中断一个后台进程,但后台进程可以通过kill命令来或退出系统来中断执行。
注意: 后台进程都要明确地重定向输入和输出。
注意: 一个后台任务中可以同时包含多个命令,只要将这些命令用括号括起来(命令1,命令2,命令3),然后操作系统就会作为一个任务执行这些命令。
19.3 将任务放在后台/前台运行
jobs      显示当前运行的任务
ctrl + z    将当前前台运行的程序挂起。
fg [%number]  将指定任务号的任务放在前台运行
fg [%string]  将以指定字符串开头的命令放在前台运行
bg [%number]  将指定任务号的任务放在后台运行
bg [%number]  将指定任务号的任务放在后台运行 
在POSIX shell 中,进程可以被放在前台或后台运行。如果你在前台正在运行一个冗长的进程,你可以向这个进程发送一个susp(挂起)信号,这个信号通常被设置为ctrl + z.。这个挂起字符通常是在登录时通过.prifile指定的,语法为:stty susp ^Z 。这个动作会暂时停止你的前台进程,同时出现一个shell提示符。你然后可以使用bg命令来将这个命令放到后台运行。
同样,如果你有一个在后台运行的进程,你想要把它放在前台运行,你可以使用fg命令,然后前台进程会控制你的终端,直到运行完毕或者被挂起。
15.4 nohup 命令
语法:
nohup 命令 (使命令不被挂起)。
例子:
$ nohup cat * > bigfile &
$ ctril + d
login: user3
passwd :
$ ps -ef |grep cat
UID PID PPID COMMAND
User3 972 1 cat * >bigfile &
UNIX系统提供一个nohup命令来使命令不被挂起。nohup命令是一组特殊unix命令的一个,这组命令被称为 prefix command(前缀命令),这个命令在其他命令之前使用。记住,退出系统通常都会中止后台的进程。但是如果一个后台命令以nohup开头,你就可以放心地退出系统,系统会继续完成你的进程,即使这个程序的父shell不再运行。注意,当nohup命令的父进程中止后,这个命令会被1号进程(init)所收养。你可以再次登录观察nohup命令执行后的状态和结果。
当使用nohup的时候,用户通常都要重定向输出到文件中。如果用户没有指定一个输出文件,nohup会自动地重定向输出到nohup.out文件中。注意,nohup.out文件中会同时会有标准输出和标准错误信息。
19.5 nice 命令
语法:
nice [-N] 命令 使一个命令以更低的优先级运行
N 为一个1到19的号码
例子:
$ nice -10 cc myprog.c -o myprog
$ nice -5 sort * > sort.out &
UNIX操作系统是一个分时的系统,进程的优先级决定程序使用系统资源的频率。优先级低的任务比优先级高的用户存储系统的频率更少。例如:你的终端线索有相对更高的优先级得到提示和系统响应。
nice命令是另一个前缀命令,其作用是降低一个程序的优先级。对于哪些不要求立即完成的命令,可以使用这个命令来降低其优先级,例如格式化整个帮助手册。
语法是:
nice [-increment] 命令
increment是一个1到19的整数。默认值为10。一个进程的nice值越高,它的优先权就越低。nice值不是一个绝对的优先级修改量。
你可以通过ps -l来浏览进程的优先级。优先级在字段PRI那一栏显示。更高的优先级任务的优先值更低。nice 值在字段NI下显示。
在大多数的UNIX系统中,前台进程默认nice值为20,后台进程的值为24。最大值为39,所以最大的增量为19和15。更多的增量都不会增加超过39。而负的增长只能root使用。
19.6 kill 命令
语法:
kill [-s signal_name] PID [PID....] 发送一个信号给指定的进程。
例子:
$ cat /usr/share/man/cat1/ * > bigfile1 &
995
$ cat /usr/share/man/cat2/ * > bigfile2 &
996
$ kill 995
[1] -Terminated cat /usr/share/man/cat1/* > bigfile1 &
$ kill -s INT %2
[2] + interrupt cat /usr/share/man/cat2/ * >bigfile2 &
$ kill -s KILL 0
kill 命令能被用来中断任何命令,其中包括nohup和后台命令。具体的说,kill发送一个信号给一个进程,进程收到其中的大多数的信号后,默认的行动都是死亡。发送信号者必须是进程的属主;不能用kill杀掉其他用户的进程除非你是是超级用户。
在UNIX系统中,实际上是不可能真正地杀死一个进程,大多数的UNIX系统所做的只是要求进程自己结束。默认的情况是,kill发送TERM信号(软中断信号)给指定的进程。但进程通常不会捕捉或者会忽略这个信号。而有其他的信号,如上表列出的信号,能够通过-s选项指定。UNIX系统提供的,确保 kill执行成功的,最方便的办法就是KILL信号(kill signal)
要想杀死一个进程,你可以指明进程ID或任务号。当指明任务号的时候,必须使用%作为前缀。如果指明的进程号为0,会终止所有的与当前shell相关的所有的进程,包括当前的shell。
注意: 命令kill –l 会列出所有支持的signal-name(信号名)的值。当 –l 选项被使用的时候,每个信号的符号名称都会输出到标准输出上:
$ kill –l
HUP INT QUIT ILL TRAP ARRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM USI USR2 PWR VTALRM PROP I
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-4-30 17:53:02 | 显示全部楼层
推荐]vi全屏幕编辑器
第十五章:vi全屏幕编辑器
vi(Visual)是以视觉为导向的全屏幕编辑器、共分为三种方式(mode):
command方式:
 任何输入都会作为编辑命令,而不会出现在屏幕上,若输入错误则有“岬”的声音;任何输入
 都引起立即反映
insert方式:
 任何输入的数据都置于编辑寄存器。在command方式下输入(I,a,A等),可进入insert方式,  insert方式下按ESC,可跳回command方式。
escape方式:
以“:”或者“/”为前导的指令,出现在屏幕的最下一行,任何输入都被当成特别指令。
进入vi(在系统提示符下面输入以下指令):
vi           进入vi而不读入任何文件
vi filename      进入vi并读入指定名称的文件(新、旧文件均可)。
vi +n filename    进入vi并且由文件的第几行开始。
vi +filename      进入vi并且由文件的最后一行开始。
vi + /word filename  进入vi并且由文件的word这个字开始。
vi filename(s)     进入vi并且将各指定文件列入名单内,第一个文件先读入。
vedit         进入vi并且在输入方式时会在状态行显示“INSERT MODE"。
编辑数个文件(利用vi filename(s))进入vi后)
:args         显示编辑名单中的各个文件名
:n          读入编辑名单中的下一个文件
:rew         读入编辑名单中的第一个文件
:e#          读入编辑名单内的前一个文件
:e file        读入另一个文件进vi(此文件可不在编辑名单内),若原文件经修改还没有存档,则           应先以: w 存档。
:e! file       强迫读入另一个文件进入vi,原文件不作存档动作。
存储及退出vi
:w filename      存入指定文件,但未退出vi(若未指定文件名则为当前工作的文件名)。
:wq 或者 :x或者zz   存文件,并且退出vi.
:q          不作任何修改并退出vi。
:q!          放弃任何修改并退出vi。
:!command       暂时退出vi并执行shell指令,执行完毕后再回到vi。
:sh          暂时退出vi到系统下,结束时按Ctrl + d则回到vi。
加数据指令
i           在关标位置开始插入字符,结束时候按ESC键。
I           在光标所在行的最前面开始加字,结束时按ESC键。
a           在光标位置后开始加字,结束时按ESC键。
A           在光标所在行的最后面开始加字,结束时按ESC键。
o           在光标下加一空白行并开始加字,结束时按ESC键。
O           在光标上加一空白行并开始加字,结束时按ESC键。
!command       执行shell指令,并把结果加在光标所在行的下一行。
删除指令
nx          删除由光标位置起始的n个字符(含光标位置,按一个x表示删除光标所在的字符)
nX           删除由光标位置起始的n个字符(不含光标位置)。
ndw          删除光标位置其实的n个字符组(word)。
d0           将行的开始到光标位置的字符全部删除。
d$ 或D         将光标位置起始到行尾的字符全部删除。
ndd          将光标位置起始的n行(整行)删除(dd表示删除光标所在行)。
:start,endd      删除文件的第start到end行。
关标移动
0           移到一行的开始
$           移到一行的最后
[           移到文件开始位置
]           移到文件结束位置
nh          往左移n位
nl或者spacebar     往右移n位
nk          向上移n行
n+          向上移n行,光标在该行的起始
ni           向下移n行
n-          向下移n行,光标在该行的起始
H           移到屏幕的左上角
M           移到屏幕的中间行开头
L           移到屏幕的最后一行
G           移到文件的最后一行
nG或者:n       移到文件的第n行
nw          右移n个字组,标点符号属于字组
nW          右移n个字组,标点符号不属于字组
nb          左移n个字组,标点符号属于字组
nB          左移n个字组,标点符号不属于字组
Ctrl + u       屏幕上卷半个菜单
Ctrl + d        屏幕下卷半个菜单
Ctrl + b        屏幕上卷一个菜单
Ctrl + F        屏幕下卷一个菜单
修改指令
r           修改光标文件的字符
R           从光标位置开始修改,结束时按ESC键
new          更改n组字符,结束时按ESC键
ncc          从光标所在位置开始更改n行,结束时按ESC键
重排各行长度
i           并按Enter将该行由光标所在处断开,并进入insert方式
J           把下一行的数据连接到本行之后
寻找指令
/text         从光标位置往下找字串text
?text         从光标位置往上找字串text
n           继续找下一个字串(在输入上面的寻找指令之后使用)
寻找并且取代指令
:getxt1/s/ /text2/options   将各行的text1替换为text2
               option=g表示文件中所有的text1均被取代,若未输入任何option,则只有               各行中的第一个出现的text1被取代
               option=go 在屏幕显示各取代的行
               option=gc 在每个字串取代之前要求确认 
Start,endgtext1/s/ / text2/options  同上,只寻找并取代第start~end行。
或:Start,ends/text1/text2/options
复制及移动文件
:first,last co dest      将first 到last行的数据复制到目标行(dest)下面
:Start,end m dest      将start 到 end行的数据移动到目标行(dest)下。   
:r filename          将指定文件的内容读入光标所在行下。
nY               将光标所在位置开始的n行数据暂存
p               复制暂存数据在光标的下一行
P               复制暂存数据在光标的上一行
其他命令
.               重复前一指令
u               取消前一指令
Ctrl + l           刷新屏幕显示
:set number          显示文件的行号,但不会存文件
:set nonumber         解除行号显示
:set ai            设置每行起始位置(以光标当前位置为起始)
:set noai           取消行起始位置设定
:f 或<Ctrl> + g        告诉用户有关现行编辑文件的数据。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-4-30 17:53:47 | 显示全部楼层
[推荐]系统管理简介
UNIX系统管理第一章 系统管理简介
目标
完成这一章,你能够做以下事情:
明确系统管理员的责任
1.1 系统管理员的角色
系统管理员的职责就是设置和维护系统。系统管理员不仅必须了解硬件和软件,而且必须了解用户组的需求。
由于与这些职责相关的命令不是让每个人都可以使用的,系统管理员需要对系统有特殊的权限,这种权限就叫做超级用户或者叫root存取。
1.2 硬件方面的职责
硬件的职责
建立并且维护系统硬件
检验并正确安装外部设备并且对其进行测试。
监控硬件的性能。
在硬件设备出现故障的时候安排进行修复
系统管理员的职责中有配置和管理系统硬件设备。系统管理员可以不是实际安装这些硬件的人员,通常硬件厂商的工程师会给你安装硬件。一旦系统开始运行,系统管理员就必须监视系统中不同硬件的性能,如果硬件发生故障,系统管理员应该试图尽可能隔离这些故障,然后让硬件工程师来进行必要的修理。
系统管理员必须知道一些基本的系统硬件如何工作的知识。
1.3 软件方面的职责
安装和配置操作系统
创建文件系统
保证文件系统的一致性
监控系统资源的使用
计划和实施备份和恢复。
配置和维护打印缓冲系统软件
安装和维护网络通信软件
升级操作系统的版本
安装和升级应用程序
如果你的系统没有预装操作系统,你可能需要安装操作系统。操作系统的媒介可能有多种形式,软件分发可能是一系列的磁带或者是CD-ROM。
分发的介质有:
压缩的磁盘:只读的磁盘(CD-ROM)
数字数据存贮磁带(DDS),
4英寸的盒式磁带(QLC),(只用于服务器)
系统管理员必须将系统软件安装到硬盘上。
一旦系统安装完成,就必须配置软件,方法是修改某些值或参数。这样做的目的是让操作系统能识别附加的设备或增强系统的效率。操作系统利用文件系统来组织数据。由于所有的系统和用户的数据都是存储在文件系统中,所以保证文件系统的一致性十分重要,系统管理员应该执行一些操作来检查文件系统中的错误,如果发现错误就必须进行一些改错的操作。文件系统的大小是有限的,并且通常存在于本地的磁盘上。系统管理员必须监控一个文件系统有效空间。并且应该使用一些程序来备份和删除废弃的或是不用的文件,这样才能保持有效的存储空间不被过分消耗,那些不时会增长的文件也需要监视。系统资源不仅仅包含磁盘的存储空间,还包括内存,外部设备,和内核的数据结构, 系统管理员可以定制和监控这些资源使其保持在一个合适的范围内。确保系统中数据的安全也是系统管理员的一个任务,通常都要做系统数据的备份,这样如果有用户错误或者硬件错误导致的数据丢失,可以使用备份数据来恢复。一些UNIX系统还会使用外围设备,如行式打印机,激光打印机。系统管理员必须管理输出到这些打印设备的软件。不同的UNIX系统通过一种电子通信机制来相互联接,这种机制叫做网络。通过网络,你可以发送电子邮件,在机器和机器之间传送数据。系统管理员必须安装,配置和监控网络软件。操作系统和其他子系统和应用程序都可能有升级版本出现,升级可以提高或者修正程序的特征,或者增加新的功能。系统管理员有责任升级系统中的软件以满足用户的需求。
1.4 对用户的责任
对用户的责任
允许用户按其需要来使用系统。
评估用户的需求。
计划未来系统的增长和改变。
为用户提供帮助。
为你的公司/组织使用计算机系统和网络系统制定规章和程序。
一旦系统安装完毕,就要求指定一套用户使用系统的规范。系统管理员有责任制定这些规范。系统管理员必须尽可能规划系统以满足用户组的需求。系统管理员应该分析系统将来的用途,清楚系统中的用户的情况,每个用户需要的系统资源和外围设备,和不同用户组需要共享的数据和程序。
任何系统管理员都会被视为系统的专家,用户会认为你知道系统中的任何事情,并且会将你看作专家,这与你的知识水平有无关。在许多用户的脑子里,“你必须知道”比他们要作的更多。你可能会被问许多问题,例如“我该如何办...” 和接到一些如“我的终端坏掉啦”或“我忘记了我的密码”等报告,这些问题对系统管理员的角色非常有挑战性,也是这个工作的最有意思的部分,但是,如果用户习惯于在来问你之前试一试自己查找帮助手册,这样会使你每一天的工作的被打断的次数减少到最少,并且用户会有更多的信心来使用系统。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-4-30 17:54:34 | 显示全部楼层
[推荐]创建和管理用户帐号
UNIX系统管理-第二章 创建和管理用户帐号
创建和管理用户帐号
目标
完成这一章,你能做以下事情:
列出建立一个用户帐号步骤
理解/etc/passwd文件的每一个字段的含义
理解/etc/group文件的每一个字段的含义
创建、修改和删除用户的帐号
启用和禁用一个用户帐号
1.1 用户与用户组 — 使用系统资源和数据
为了使用系统的资源,用户首先要登录系统,系统管理员可以控制其它用户登录系统,可以阻未授权的用户运行程序,消耗系统资源,还可以控制其它人对存储在系统中的数据的存取。
系统中的用户被分成一个或多个用户组。一种典型的情况是:文件可以被一个组的用户存取,但是不能被用户组之外的用户存取。用户对文件和目录的存取都是基于他所属的组的定义。
你为每一个使用你的系统的用户分配一个用户名(或叫登录名),同样也能选择组和决定哪一个用户被分配到哪一个组。
用户可以使用命令/usr/bin/id来检查自己的用户ID和所属的组ID。
1.2 用户帐号的定义
用户想要登录一个系统,必须要有一个有效的用户名,用户ID 号,密码,和在/etc/passwd中定义的其它的帐号信息。通过修改文件 /etc/group,用户可以属于其它的组。最后,多数的用在/home目录下都有一个目录,在这个目录下,他们可以存储属于自己的文件和目录。
你可以通过命令行 useradd,userdel,和usermod或者用vi 编辑器来管理用户的帐号。
1.3 /etc/passwd文件
/etc/passwd文件中包含用户登录所必须的信息。文件的每一行代表系统中的一个有效用户。所有的域以冒号(:)作为分割符。
用户名    用户名是用户在登录时候使用的命令。用户名的长度应在1到8个字符之间,第一个字符必须是字母。如果用户名超过8个字符,只有前8个字符有效。
密码      经过加密处理的口令。当用户使用passwd命令设置密码的时候,系统 会对用户输入的口令进行加密。密码应该是6到8个字符,其中应该有一个数字或其他特殊字符。如果密码这个域为空,登录的时候就不需要密码,但这会使系统很容易被入侵。密码域为星号的用户帐号无效,因为你键入的任何字符都不能被加密成为星号,所以没有人可以使用这个帐号登录系统。
用户ID     系统中每一个用户都被分配一个用户ID号。ID 号为0是为root保留的。UID号1-99是为系统其它预定义的帐号保留的。
组ID 号     组ID号(GID)。这个号码对应/etc/group文件中一行信息。
ID 字符窜    这是一个注释字段,你可以在这里加上关于这个用户的其他的信息。例如用户的全名,电话号码,部门,和门牌号,行打印缓冲系统和finger命令会使用这个字段中的内容。
Home目录    当用户登录时所在的目录的绝对路径名。如这个目录不存在,或是无效,用户就不 能登录系统。
shell     当用户登录系统时要执行的命令的绝对路径名,典型的情况下,这个命令是shell,通常使用的shell是 /user/bin/sh,/usr/bin/ksh,和/usr/bin/csh。如果这个字段为空,系统会默认为/usr/bin/sh。命令字段不必都是一个shell,例如,你可以在/etc/passwd文件中创建一个条目:
date:rc70x.4.hgjdc:20:1::/:/usr/bin/date
在这里命令字段为/usr/bin/date。如果使用date作为登录名,然后键入正确的密码,系统会运/bin/date命令。然后退出系统登录。
注意;passwd文件的许可权限只能被设置为只读(r—r—r--)同时属主必须为root。
编辑/etc/paswd文件
当你正在用vi命令来编辑/etc/passwd文件时,一个用户正试图更改他的密码,这个用户的更改不会写到这个文件中,为了避免这种情况出现,在编辑/etc/passwd文件时请使用vipw命令
$ vipw
这个命令通过拷贝/etc/passwd文件为/etc/passwd.tmp文件,并对/etc/passwd文件进行锁定。如果这时有一个用户想要更改密码,他会被告之passwd文件正在使用。当你使用完vipw,系统会进行一些检查,如果你的修改正确,临时文件会被移动到/etc/passwd 中。否则,/etc/passwd文件会继续保持不能被修改的状态。
检查/etc/passwd文件
使用/usr/sbin/pwck命令可以检查/etc/passwd文件的一致性。它会检查每一行的域的数目,登录的目录和登录执行的程序是否存在,验证登录名,用户ID和组ID。
1.4 /etc/group 文件
/etc/group文件中包含有组的定义,组的字段使用冒号(:)分割。
组名     一个关于这个组的助记符。如果你对一个文件使用ls -l 命令,你会看到在“组” 域中的名字会显示出来。
密码    通常都没有被使用,所以为空。如果你需要要设置组的权限,这个域可以是一个经过加密的组密码。
组ID    组ID(GID)。这个号码就是在文件/etc/passwd中的组ID字段中的号码。这个号码为组的成员共享,推荐系统管理员在创建组ID号的时候大于100,这样可以避免同当前和将来的系统需求冲突。
组员列表: 组的成员的用户名的一个列表。在有的unix操作系统中,不是所有的组的成员都在/etc/group文件中列出。用户初始登录组是在/etc/passwd文件的第四个域中定义,而不是在/etc/group 中定义。
请注意,一个用户可以同时属于不同的组,使用newgrp命令可以切换到不同的组中去。
$newgrp group_name
命令执行后,这个新组会成为用户的有效组。切换到新的组不会不会更改/etc/passwd文件中的关于用户的主组的定义,而仅仅会更改在使用 newgrp命令后,用户创建的任何文件的组的定义。不带任何参数执行newgrp名会返回这个用户在/etc/passwd文件中被分派的组。
使用/usr/sbin/grpck命令可以检查/etc/group文件的一致性。这个命令可以检查每一行的域的数目,和是否所有的登录名都在/etc/passwd中存在。
1.5 使用命令行管理用户帐号
useradd,usermod,userdel
groupadd,groupmod,groupdel
管理帐号和组的一种方式是使用命令。使用useradd命令会在/etc/passwd和/etc/group中增加一行,使用这个命令还可以选择同时创建用户的home目录、shell和自动拷贝一个目录下的文件到用户的home目录下。
语法;
useradd [ -u uid [-o]] [-g group] [-G group [group]] [-d dir] [-s shell]
[ -c command] –m [ -k skel dir]] login
其中-o选项允许多个UID,-m选项使建立home目录。其中的许多的选项都是默认的。
例子:
1) 为用户renay创建一个帐号,并且建立一个/home/renay的home目录。使用/etc/skel作为框架目录,/usr/bin/sh作为shell。并且使用下一个最高的UID。
useradd –m –s /usr/bin/sh renay
2)为名叫Tracy的用户创建一个帐号。Tracy的主组为staff,tracy同时也是pe和chemistry组的成员。创建一个home 目录,而剩下的项目都使用默认值。
useradd –m –g staff – G pe,chemistry tracy
显示useradd命令的默认值。
useradd –D
更改默认的组为其他的组
useradd –D –g others
使用userdel命令删除用户。语法为:
userdel –r login
-r选项:在删除用户帐号的同时会删除用户的home目录。
groupadd命令语法为:
groupadd [-g gid [-o]] group
例子:
增加一个叫economics的组。使用大于ID号100,并且最接近100的有效的组ID号。
groupadd economics
1.6 使用命令行方式更改用户的密码
任何用户(普通用户和超级用户)更改密码都需要使用passwd命令。通常用户都能更改自己的密码(但是不可以修改别人的密码)。当使用这个命令的时候,用户被提示输入当前的密码,然后再输入新的密码,然后系统会要求你再输入一次新密码,目的是为了验证和避免输入错误。如果第二个密码同第一个密码不一致,密码不会被修改,并会会退出到shell提示符下。
如果用户忘记了他的密码,他必须寻求系统管理员的帮助。系统管理员可以通过passwd命令修改任何用户的密码。
有一个选项在创建用户帐号的时候可以禁止用户修改他们的密码。在这种情况下,只有超级用户可以修改这个用户的密码。
当更改或是分配一个用户的密码的时候请注意以下事情:
密码至少6个字符。虽然可以超过6个字符,但只有前6个有有效。
密码中必须要有两个字母(大写或小写字母),至少有一个数字或特殊的字符,这主要为了密码的安全性考虑。
注意:当你使用passwd命令的时候,系统会创建/etc/passwd文件的一个拷贝名为/etc/opasswd的文件。
你也可以用passwd命令来更改一个密码的时限。
passwd –f –n min –x max name
min和max都是以天为单位。-f选项会强迫用户在下一次登录的时候修改他的密码。
例子:
限制帐号fontana的密码的有效期限
passwd -n 7 -x 35 fontana
 强迫用户buddy在下一次登录的时候修改他的密码:
passwd –f buddy
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-4-30 17:55:31 | 显示全部楼层
[推荐]定制用户帐号
UNIX系统管理-第三章:定制用户帐号
目标
学完这一章,你将能够做以下事情:
列出在登录过程中读取的配置文件
更改默认的用户PATH
更改默认的用户终端类型
更改用户提示符
更改用户命令行编辑器
更改用户默认打印机
管理/etc/skel中默认的配置文件
为什么要定制用户帐号
设置用户终端类型
定制用户提示符
设置用户默认终端,定制用户PATH变量
定义一个命令行编辑器
如果只是简单地在/etc/passwd和/etc/group文件中创建条目可能不能满足用户所有需求,例如:
你可能需要定义用户的终端类型,以便应用程序可以正确地输出到用户的屏幕上。
你可能需要定制用户的提示符。因为许多的用户喜欢在提示符中显示他们当前所在路径名
虽然系统管理员定义了一个系统默认打印机,但是有些用户可能会要求使用另外的打印机。
如果用户要使用第三方的软件,你可能需要修改他们的PATH变量,以便shell可以找到这些应用程序。
如果用户希望使用命令行编辑和命令历史机制,需要特殊的配置。你可能希望为新用户配置这些功能。
一些例子
export TERM='vt100'
export PS1='$PWD $'
export LPDEST='laser'
export PATH=$PATH:/usr/local/bin
export EDITOR=vi
export HISTSIZE=40
export HISTFILE=~/.sh_history
上例中提到的特性是在登录的时候,通过“环境”变量来定义的。一些经常修改的环境变量如下
TERM   
TERM变量定义了用户的终端类型。如果TERM变量设置不正确。应用程序就可能不能正确地写到用户的终端。有效的终端类型全部在/usr/lib/terminfo/*目录下列出。你可以使用如下类似的命令来准确的设置一个TERM类型:
export TERM=vt100      #对应一个vt100类型的终端
export TERM=hp       #对应一个HP ASCII终端
export TERM=dtterm     #对应一个dtterm终端模拟窗口
你也可以使用ttytype命令来设置你的终端变量。这个命令通常可以自动识别你的终端类型。以下的代码可以加入到你的登录时运行的脚本中,为你设置你的终端类型:
if [ "$TERM = "" -0     "#TERM" = "unknown" -o     "#TERM" = "dialup" -o     "#TERM" = "network" ]
  then
      eval 'ttytype -s -a '
  fi
  export TERM
PS1
PS1变量定义你的shell提示符。这个提示符也可以由用户自己来修改。一些有用的PS1的值如下所示:
export PS1='S'            #使用一个简单的"$"提示符
export PS1='$PWD $'         #在提示符内包括用户的pwd
export PS1='$PWD ($LOGNAME) $'    #同时包括用户的用户名
LPDEST
LPDEST定义了用户默认打印机。在LPDEST中设置的打印机会优先于系统管理员设置的系统范围内的默认打印机。例子 :
export LPDEST=laser
export LPDEST=printera
PATH
用户每次输入一个命令,shell就必须去查找这个命令的可执行文件的位置。PATH变量中包含有一个以“:”分割的路径的列表,shell在这些列表中查找可执行文件。如果用户需要使用一个新的应用和工具,你也许会需要修改你的PATH变量。你可以使用以下类似的语法来在用户的PATH中增加新的目录:
PATH=$PATH:/usr/local/bin     # 在已存在的PATH中增加/usr/local/bin这一个路径
初始化的PATH变量通常取自/etc/PATH文件。通常安装一个应用会自动更新/etc/PATH文件,所以不用单独地设置用户的PATH。
EDITOR
如果你的用户想要使用命令行编辑,需要定义三个变量:
export EDITOR=vi
export HISTFILE=~/.sh_history
export HISTSIZE=50
EDITOR定义用户选择的命令行编辑器。emacs和vi是唯一允许的两个值。HISTFILE代表记录用户输入的命令的文件名。HISTSIZE决定保存在shell的命令缓冲区内的命令的数量。
这些仅仅是你能为你的用户定义的普通的环境变量的一部分。其它的环境变量的定义可以在POSIX shell的帮助中查找,你的用户也可能需要用到其它的变量。
环境变量可以在命令行中定义,但是更通常的做法是在登录配置文件中定义,这会在以下的章节中介绍。
用户登录的时候发生了什么?
虽然定制一个用户的登录环境的环境变量可以在命令行中定义,但是通常是在登录过程中执行的脚本中定义,典型的,有三个脚本被用于在用户登录时初始化环境。
第一个脚本是由系统管理员维护的一个脚本文件,用来为所有的用户定制通用的环境变量。
第二个脚本是每个用户自己维护的本地脚本文件,本地登录脚本能覆盖和修改系统默认的脚本。
另一个可选的脚本:附加的本地登录脚本能够定义附加的环境变量或者设置附加的shell特征。在POSIX shell中,附加的脚本通常用来定义shell别名。
登录脚本的名字在各种shell中都是不同的。以下是POSIX,Korn,和C shells的登录脚本的详细讨论:
Shell环境初始化的顺序
1. shell运行正确的系统登录脚本,这个脚本初始化用户的环境。系统登录脚本定义一个默认的环境,这个脚本可以由系统管理员定制。
如果shell是..... 系统登录脚本是....
Bourne(/usr/old/bin/sh) /etc/profile
korn(/usr/bin/ksh) /etc/profile
POSIX(/usr/bin/sh) /etc/profile
限制的shell(/usr/bin/rshr,/usr/bin/rksh /etc/profile
C (/usr/bin/csh) /etc/csh.login
这些脚本定义和输出的环境变量有PATH,TZ,TERM,其来源于/etc/PATH,/etc/MANPATH,/etc/TIMEZONE, /etc/SHLIB_PATH这些文件。由于这个系统登录脚本在所有用户登录的时候都会运行,系统管理员可以通过修改这个文件来为所有用户设置默认环境变量。
这种特性还可以让每一个用户在登录系统时执行一些基本的命令。
2. 显示/etc/copyright 和/etc/motd文件中的内容。
3. 提示用户没有阅读的新闻:
  news:news_filename
4. shell运行在用户的home目录下的用户的本地登录脚本(如果存在)。
如果shell为..... 本地登录脚本为....
Bourne(/usr/old/bin/sh .profile
Korn(/usr/bin/ksh) .profile
POSIX(/usr/bin/sh .profile
限制的shell(/usr/bin/rsh,/usr/bin/rksh .profile
C (/usr/bin/csh) .login
注意:在典型情况下,系统管理员在最初创建用户帐号时,会为每个用户创建一个本地的登录脚本。如果使用useradd命令来添加一个用户,它会拷贝默认本地登录脚本文件(/etc/skel/.profile)到这个用户的home目录下。用户可以自己继续修改这个文件来定制他们的环境变量,以满足自己的需要。
在这个脚本之外,POSIX,Korn,和C shells可能(通常都会)有另外的本地登录脚本:
-POSIX和korn shell-: 如果定义了ENV变量,shell会运行在ENV中定义的文件(典型的,.shrc在开启一个新的shell的时候执行,许多程序(例如,vi,和mailx)运行用户在程序执行中开启一个shell;这被称为一个shell escape,一个 shell escape会要求重新执行一次ENV文件,而.profile只会在登录的时候执行。ENV文件(.kshrc或者.shrc)会在登录时,.profile文件执行后执行。
- C shell:在一个新的C shell启动的时候运行.cshrc文件。这和Korn shell ENV文件的工作方式类似。.login 文件只在登录的时候运行,每一次开启一个新的C shell的时候会重新运行.chsrc文件。
一旦所有的初始化工作都完成后,shell会出现一个提示符等待用户的输入。
/etc/skel目录
当使用useradd命令创建一个新用户帐号的时候,系统会拷贝一些默认的配置文件到新用户的home目录下。/etc/skel目录下的默认的配置文件包括:
/etc/skel/.profile     #ksh/posix本地登录脚本
/etc/skel/.login      #csh 本地登录脚本
/etc/skel/.cshrc      #csh 附加登录脚本
/etc/skel/.exrc      #vi 启动配置文件
如果你想要修改自动拷贝到新用户home目录中的默认配置文件,你可以修改/etc/skel中的文件。对/etc/skel目录下的文件的修改不会影响已经存在地用户的home目录下的文件。
如果你的应用要求在新用户的home目录下自动创建一些配置文件,你同样也可以通过在/etc/skel目录下添加文件来实现。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-4-30 17:56:16 | 显示全部楼层
[推荐]文件系统布局
UNIX系统管理-第四章:文件系统布局
目标
完成这一章,你能作以下事情:
描述为什么要区分动态文件系统和静态文件系统
描述/sbin,/usr,/stand,/etc,/dev,/var(操作系统相关目录)的主要内容
描述/opt,/etc/opt,和/var/opt(应用程序相关)的主要内容
使用find,和whereis命令在文件系统中查找文件
介绍文件系统范例
许多系统管理任务都要求系统管理员知道系统和应用程序的配置文件和日志文件的位置,并能对这些文件进行操作。所以了解文件系统组织结构,可以让你能找到这些文件并进行系统管理的工作。
下面介绍标准的AT&T SVR4文件系统布局。
文件系统中的文件可以通过不同的方法分类。例如可以分为静态文件和动态文件,可执行文件和配置文件。这些分类原则组成了文件系统的逻辑结构,并且能够简化系统管理的任务。
文件系统可以分为静态和动态两个部分
文件系统中的文件和目录被分为静态和动态两类。静态文件和目录中的内容很少更改,除非是安装补丁或者安装操作系统或安装应用程序。可执行文件,库,和系统启动工具,都被认为是静态的。
动态文件和目录是经常更改的。配置文件。临时文件,和用户文件被认为是动态的。
区分动态和静态数据提供了以下的优点:
系统备份更容易
磁盘空间管理更简单
可执行文件和配置文件
配置数据和可执行代码是分别保存的。分开保存配置文件和可执行文件能够提供了如下优点:
当操作系统升级的时候,对配置数据的更改不会丢失。
可以很容易地通过网络共享可执行文件,同时每个主机自己的配置文件可以存储在本地主机上
文件系统布局
操作系统的可共享部分的数据存在于/usr,和/sbin下面。只有操作系统能够安装文件到这些目录下去。应用程序位于/opt下面。
/usr,/sbin目录和/opt下面的应用程序子目录能够在网络中的主机之间共享。因为它们不包含每个主机特定的信息。每个主机特定的信息位于文件系统的动态数据目录下。
这些目录的通常的定义为:
目录    定义
/usr    可共享的操作系统命令,库,和文档。
/sbin    引导系统和安装其它文件系统的最少需要的命令
/opt    应用程序
/etc    系统配置文件,不再包含可执行文件
/dev    设备文件
/var    动态信息例如日志,脱机打印缓冲文件
/mnt    本地装载的文件系统
/tmp    操作系统临时文件
/stand   内核和引导加载器。
/home    用户目录
/usr目录的更详细的内容
/usr目录包含操作系统的大部分,包括命令,库,和文档。/usr文件系统包含操作系统的文件,例如可执行文件和ASCII文档。
/usr目录下标准的子目录在如下定义;
/usr/bin      操作系统的用户命令
/usr/conf     内核配置文件
/usr/contrib    发布的软件
/usr/lbin     其它命令文件
/usr/local     用户自己安装的软件
/usr/newconfig   默认的操作系统配置数据文件
/usr/sbin      系统管理命令
/usr/share     独立结构的共享文件
/usr/share/man   操作系统帮助手册
/usr/share/doc   技术相关的白皮书
/var目录的详细内容
/var目录中保存各种日志,临时文件,中间文件,和打印缓冲文件。/var目录的大小变化很大。在通常情况下,任何应用程序或者命令在运行时候创建的文件,对操作系统来说不是关键性的数据,通常都会被放在/var目录的下面。例如,/var/adm中会包含于系统管理相关的日志和其它运行时创建的文件。 /var还包含有可变大小的文件例如crontabs,和打印系统和邮件系统的缓冲区。
通常/var下面的都是一些临时文件,系统管理员如果想要释放磁盘空间,可以通过搜寻/var目录,来查找那些文件可以被清除掉。
/var下面包含的文件有:   
/var/adm     普通的管理文件和日志文件
/var/adm/crash  内核的dump文件
/var/mail     收到的邮件
/var/opt/     应用运行时产生的文件(例如日志,临时文件)。每一个应用程序有自己的目录
/var/spool     操作系统子系统,例如lp(打印),cron等系统的缓冲文件
/var/tmp     /usr目录下的命令产生的临时文件
/var/adm目录下的详细内容
这个目录被用来保存普通的管理文件,日志和数据库,例如,syslog产生的文件,cron使用的文件,内核dump文件。
/var/adm/crash    内核崩溃dump文件会被保存在这个目录下
/var/adm/cron    cron使用的日志文件,
/var/adm/sw     软件发布使用的日志文件
/var/adm/syslog   系统日志,应用程序和内核都可以在这个文件中写日志。syslog守护进程负责写这些日志信息。syslog守护进程的行为能够通过/etc/syslog.conf来定制。默认的日志文件名为/var/adm/syslog/syslog.log。在启动的时候,这个文件被拷贝为OLDsyslog.log,新的syslog.log文件被创建。这个文件是一个ASCII码文件。
/var/adm/sulog   这个文件包含所有的su命令的使用记录。sulog是一个ASCII文件。
/var/adm/wtmp   这个文件包含成功登录的记录。这个文件不是ASCII文件。last命令被用来显示这个文件的信息。wtmp文件会持续增长,系统管理员应经常对这个文件进行修剪。
/var/adm/btmp   这个文件包含非成功登录的记录。这个文件不是ASCII文件。lastb命令可以用来显示这个文件中的信息。btmp文件会持续增长,系统管理员应经常对这个文件进行修剪。
/var/adm/utmp   这个文件包含登录到系统的所有用户的记录。write,who等命令会使用这个文件,但它不是ASCII文件,所以不能被直接浏览。
应用程序的目录
每一个应用程序会在/opt,/etc/opt,/var/opt下面有自己的子目录。而应用程序的可共享的,或者静态的部分在它们自己的/opt/application目录下,这个目录的结构同操作系统文件系统的结构类似:
/opt/application/bin     用户命令
/opt/application/share/man 帮助手册
/opt/application/lib     库
/opt/application/lbin    后台命令
/opt/application/newconfig 配置文件的主拷贝
应用程序的日志文件在/var/opt/application目录下,而主机特定的配置文件在/etc/opt/application目录下。
帮助你定位的命令
find     在文件系统层次结构中查找文件
whereis   定位源程序,二进制代码,和帮助手册的位置
which    在你的PATH中定位一个可执行文件
file     判断文件的类型
作为系统管理员,你可能需要在整个文件系统中检索文件。UNIX提供了几个查找文件和执行文件的工具,它们是:
find命令
find命令是一个功能强大的工具。它可以从你指定的点开始在文件系统中查找符合条件的文件。也可以通过名字,属主,和修改时间等等来查找文件。find同时允许你使用找到的文件作为一个参数来执行一个命令。
例子:
查找属于用户grep的所有文件
# find / -user grep
在/tmp目录下查找7天都没有存取的文件
# find /tmp -type f -atime +7
删除core文件
# find / -name core -exec rm {}\;
whereis命令
whereis 命令在你收到“没有发现”错误信息的时候十分有用。它会搜索一个预定义的目录列表。默认的情况下,whereis会去搜索源程序,二进制文件,和帮助手册。你可以使用-b选项来限制它只搜索二进制代码。
例子:
# whereis -b ls
ls: /usr/bin/ls /sbin/ls
which 命令
which命令在在判断将要使用命令的哪一个版本时有用。一些命令有多个home。你到底是执行的哪一个版本,是由你PATH变量中指定的目录的顺序决定的。
file命令
file命令对文件作一系列的测试,然后会试图对文件归类。这个命令在判断一个命令是一个shell脚本还是一个二进制的可执行文件时有用。
例子:
# file /sbin/shutdown
/sbin/shutdown : s800 shared executeable
# file /sbin/rc
/sbin/rc: ascii text
strings 命令
strings命令可以找出一个二进制文件中的可用信息,它会在屏幕上显示出文件中的任何可以打印的字符。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-4-30 17:57:12 | 显示全部楼层
[推荐]配置设备文件
UNIX系统管理-第五章:配置设备文件
目标
学完这一章,你将能够做以下事情:
解释设备文件的用途
解释主号和次号的意义
描述块设备和字符设备的不同
使用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的设备选项是什么。
/dev目录的布局
这一部分会介绍系统对一个设备文件取名的命名规则。一个容易理解的命令规则会让你更容易地选择和使用你系统中的设备文件。
在多数UNIX系统中,所有的设备文件都是存在于/dev目录下的。一些设备文件事直接在/dev目录下,而另外一些被组织在/dev下的子目录下。一下是一些重要的设备文件目录的列表
/dev       包含所有的终端,moderm,lan和打印机的设备文件。
/dev/dsk     包含所有的块磁盘设备文件
/dev/rdsk    包含有所有的裸磁盘设备文件
/dev/rmt     包含有所有的磁带设备文件
设备文件命名规则
默认的情况。操作系统给一个设备文件取名的时候是依据一个标准的命名原则。虽然你可以任意对一个设备文件取名。但是使用一个标准的命名规则会使用定位你的设备文件十分容易。
界面卡号
内核自动对系统中的每个设备和界面卡赋予一个号码。这个号码在ioscan -f输出的“I"这个字段显示。
磁盘,磁带或者CD ROM的设备文件名中的"C"指明这个设备连接的界面卡的数字。ioscan命令显出的所有的磁盘都有一个相同的以”C0"开头的设备文件,这是因为SCSI卡的号码为"0"。
注意每一个设备文件都有一个号码,这个号码只是操作系统专用的一个号码,并不被用来对应设备文件名。
ioscan -fun
SCSI目标地址
设备文件的“t#”部分确定这个设备文件相关联设备的SCSI目标地址。这个SCSI目标地址是通过设备自身上的跳线或者DIP开关来设置的。一个 SCSI设备的硬件路径的倒数第二个字符就是这个设备的SCSI目标地址。例如,在上例的ioscan输出中,在8/12.3.0的磁盘的SCSI地址为 “3”。8/12.6.0这块磁盘的SCSI目标地址为“6”。
SCSI逻辑单元号
逻辑单元号(LUN)能够被用来识别一个磁带库的机器手,或者是一个磁盘阵列的一个逻辑单元。对大多数的SCSI设备来说,LUN号都是“0”。每一个SCSI设备的LUN号出现在设备硬件路径的最后一个小数点后。
设备存取选项
设备文件名的最后一部分是这个设备文件的存取选项。磁带机设备文件名可能有多个选项。设备和设备的选项是不同的。
磁盘设备文件名
每一个磁盘和CD-ROM都有两个设备文件:
一个块设备文件在/dev/dsk下面
一个字符设备文件在/dev/rdsk下面
磁带设备文件名
磁带设备文件在/dev/rmt目录下,遵循c#t#d#[选项]的命名规则。同磁盘和CD-ROM不同,磁带驱动器通常都支持多个选项。
如何创建一个设备文件
自动配置
insf
mksf
mknod
大多数情况,你不需要创建设备文件。当第一次安装操作系统的时候。insf在进行硬件探测的时候会自动创建所有发现的设备的设备文件。每一次系统重启动,insf会创建新连接到系统的设备的设备文件。
在一一些特殊的情况下,你会需要手工创建或是修改设备文件。
自动配置
什么是自动配置
在系统启动的时候,内核会执行一系列系统初始化的工作,包括探测所有的安装在系统中的硬件。在进行硬件探测的时候,内核会确认所有的设备-总线,适配器,设备适配器-这些能够被自动配置的设备。内核绑定一个合适的驱动程序给每一个检测到的设备。
在完成系统初始化后,内核会激活init命令。init进程回读取/etc/inittab文件来激活几个系统启动的命令,包括/sbin/ioinitrc。
第一步,initrc会读取/etc/ioconfig文件的内容,然后传送设备映射信息道内核的数据结构中,io_tree。下一步,ioinit执行insf。insf会为新的设备创建设备文件。它同样会更新/etc/ioconfig文件和内核树。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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