1.UNIX操作系统简介
UNIX操作系统是一个多用户、多任务的操作系统,它于1974年问世。与一般操作系统一样,UNIX系统也是运行在计算机系统的硬件和应用程序之间,负责管理硬件并向应用程序提供简单一致的调用界面,控制应用程序的正确执行。UNIX与其他操作系统的不同之处主要有两点:UNIX与其他操作系统的内部实现不同; UNIX与其他操作系统的用户界面不同。
除了提供内核来完成传统操作系统的功能外,UNIX还为用户提供了一组系统库和标准应用。这一标准的界面不仅可以使应用程序方便地移植,还可以让用户方便地使用。标准界面的优点是应用的可移植性,即一个应用程序可以不加修改地运行在不同硬件结构的各种机器上。
2.文件系统基础
UNIX内核有两个基本的子系统:文件子系统和进程控制子系统。文件子系统负责文件的相关操作和管理进程控制子系统则负责与进程相关的操作与管理
文件子系统管理
UNIX内核有两个基本的子系统:文件子系统和进程控制子系统。文件子系统负责文件的操作与管理;进程控制子系统则负责与进程相关的操作与管理。本部分我们介绍文件子系统的管理。
几个术语
逻辑盘:物理实盘在内核中的简化。用户使用逻辑盘不必了解物理实盘的具体情况。因此系统管理员必须了解逻辑盘。
分区:内核在使用逻辑盘时。常常为了各种需要将逻辑盘分成几个部分,每个部分就成为一个分区。
文件系统:文件系统存在于分区之中,它只是经过处理的分区,是UNIX系统在磁盘上可以存放数据的一种机制。
设备项:就是与设备对应的文件。存放在/dev目录下。
针对多数使用的IDE硬盘,UNIX以如下形式定义一个IDE硬盘/dev/hd[drive][partition],每个IDE驱动器从0开始标记,分区从0开始标记。如/dev/hd00 为第一条线上的主硬盘。对SCSI硬盘,表示机制相同,只是把/dev/hd换成/dev/sd。
2.文件系统的构成
文件系统的结构如下图所示。
引导块(boot block):位于文件系统的头部,一般占一个扇区,它含有引导和启动操作系统的代码,虽然引导系统只需要一个引导块,但是每个文件系统都有一个(可能为空)的引导块。
超级块(super block):用于描述文件系统的状态,包括文件系统的大小,可以存储的文件的数量,空闲空间的位置及其他一些有用的信息。
索引节点表(inode table):存放文件系统中文件的索引节点,内核通过索引节点表中的索引来访问索引,从而访问文件。有一个节点是根索引节点,通过它就可以访问文件系统的目录结构。
数据块(data block):存储文件系统中文件的数据及进行文件
系统管理必须的管理数据。
3.文件系统高级管理
主要包括对文件系统的创建、安装、拆卸、监控和重组等。
3.1 与文件系统管理相关的文件
l /etc/mnttab文件:当前系统中已经被安装的文件系统的列表。存储格式如下
special: mount-point: fstype:mount-option: mount-time
其中
special:文件系统的设备项名
mount-point:文件系统被安装的目录名
fstype:文件系统的类型
mount-option:文件系统被安装时的一些参数
mount-time:文件系统的安装时间
3. 2 创建文件系统
文件系统的创建必须在硬盘的一个分区上进行。因此创建文件系统分为两步:一是对硬盘进行分区;二是创建文件系统。
硬盘分区采用fdisk命令,其使用方法基本和dos下的fdisk类似,其中有专门创建UNIX分区的选项。
创建文件系统使用mkfs命令。
3.3 安装与拆卸文件系统
l mount命令:实现对文件系统的安装
mount [-f Fstype] [-v][-r][-m] [-o specific-options] {special | mount-point}
没有任何参数时,mount命令列出所有来自安装表(/etc/mnttab文件)的备安装的文件系统。Mount命令结束后,将在文件/etc/mnttab文件中加入相应一项。
l umount命令:实现对指定文件系统的拆卸。
umount [-m] {special | mount-point}
该命令实现对已经安装在mount-point上的文件系统或设备项为special的拆卸,命令结束后,文件/etc/mnttab中对应的项被删除。
3.4 监控文件系统
系统管理员对文件系统进行管理的一件日常工作就是对文件系统的监控。常用命令如下:
l du命令:对磁盘分区上的文件系统的使用情况进行统计,并显示出来。
du [-sar] [name…]
给出指定文件name或指定目录name下所有(递归的)文件所占用的磁盘块数。如果不指定name,则显示当前目录的磁盘块数。
-s:对每一个指定的name,只给出总的站用磁盘块数
-a:对每一个文件都产生行输出
-r:du命令不能打开或读某个目录和文件时给出相应的提示信息
l df命令:报告磁盘空间的使用情况
df [Fstype] [-beIklnt] [-o specific-options] [dir|special]
显示指定目录或文件dir所在文件系统或指定设备项special对应文件系统使用磁盘分区的情况。如果不指定,则报告所有已经安装的文件系统
Fstype:指定文件系统的类型
-I:显示文件系统的inode信息
-l:仅报告本地文件系统的信息
-t:显示完整的清单和总计
l ff命令:列出指定文件系统中的文件名和统计信息
ff [Fstype]
进程管理
UNIX系统中所有的操作都是通过进程来实现的,因此对进程的管理是UNIX系统管理中一个十分重要的部分。
1.进程管理
UNIX系统提供了一套与进程管理密切相关的命令。
1.1 报告进程状态
ps命令:显示有关的活动进程的信息
,它所给出的信息是命令执行一瞬间的进程状态。
ps [options]
没有任选项时,只显示与执行命令的控制终端有关的进程的信息。常用任选项如下:
-e:显示当前运行的所有进程的信息
-f:以full格式产生指定进程的完整的信息清单
-l:以长格式产生指定进程的详细信息清单
-t termlist:显示与termlist中所列终端相关的所有进程的信息
-u uidlist:显示在uidlist中所列用户的所有进程的信息
-p proclist:显示在proclist中所列的所有进程的信息,proclist为进程id的列表
1.2 进程调度命令
nice命令:将较低执行命令的优先级。
nice [-increment ] command [arguments]
该命令将降低命令command的CPU调度优先级,若使用increment参数(取值范围为1~19),则优先级降低值为increment,默认值为10。当increment为负数时,则将提高命令command的优先级。
nohup命令:该命令使得命令的执行将不受挂起和退出的影响。
nohup command [arguments]
linux循环执行命令脚本nohup命令执行命令command,并使得命令在执行期间忽视以外停止和退出的影响。命令的输出被重定向到文件的当前目录的nohup.out文件。
1.3 等待进程命令
wait命令将实现对一个进程的等待。命令格式为  # wait [n]
等待进程号为n的一个进程的完成并将报告进程的终止状态。没没有参数,则将等待所有后台进程的完成并返回代码0。
1.4 挂起进程命令
sleep命令,将使得进程的执行被挂起一段时间
# sleep time 使得shell挂起time秒后,再继续执行
1.5 终止进程命令
UNIX系统的系统管理员为了保持系统良好的运转,常需要终止系统中一些活动的进程。
kill命令将发送一个信号给指定进程,并在缺省情况下终止进程。
kill [-signal] pid 向进程ID为pid的进程发送信号signal,signal可以是一个数字,也可以是一个符号,在文件/usr/include/sys/signal.h中定义。
kill -l 将显示系统中定义的所有信号的符号名。
killall [signal] 命令将实现终止所有活动的进程
2.作业控制
UNIX系统中提供了对作业(jobs)的控制。作业和进程不同,一个典型的作业就是一条命令行,其中可以包含简单的命令,shell脚本文件或者用管道相连的多条命令。下面介绍一些与作业控制相关的命令。
l jobs命令:列出在作业控制下的所有活动作业的信息。使用-l任选项则可以列出较为详细的信息。
l bg和fg命令:bg命令将在后台运行指定的作业,而fg命令则使指定的作业成为前台运行的作业。命令格式为:bg [%job…] fg [%job….]
l at和patch命令:这两个命令一起将使得某一作业在以后的某个时刻运行。命令格式为:
# at [-f script][-m]time[date][+increment]
# at 
-l [jobs]
# at -r jobs.....
# batch
at命令用于指定作业执行的时间,batch命令在将排队的作业在系统的负荷水平允许的情况下被执行。主要参数如下:
-f script:从名为script的文件中读取要执行的作业的命令
-l [jobs]:向发出本命令的用户报告已经安排的将要执行的作业,或报告指定的作业。
-m:当作业完成时,向用户发一个邮件以指出作业已经结束
-r:删除以前用at命令安排的作业。
Time和date用于指出作业被执行的开始时间和日期。
l Cron进程与crontab命令、crontab文件
Cron进程是一个在系统初启时被启动的系统进程,它将在指定的日期和时间启动一个指定的作业,作业通常是在用户的crontab文件中指定的,用户的crontab文件是利用crontab命令建立的。命令格式如下:
# crontab [file]
# crontab –e [username]
# crontab –r [username]
# crontab –l [username]
crontab 命令在系统中创建一个cron目录(默认是在/usr/sbin/cron.d)来存储用户的crontab文件,指定了文件file,则把该文件存放在该目录里。主要参数为:
-e:启动系统默认的编辑器来编辑指定用户username的crontab文件
-r:删除指定用户username的crontab文件
-l:显示指定username的crontab文件
crontab文件的每一行包含6个字段,中间用空格或制表符各开。前5个字段表示作业执行的时间。第6个字段是要执行的作业命令,这个字段中%被解释为换行符。一个crontab文件的例子如下:
# cat crontab
30 12 * * * echo
“ it is time for lunch”% (在每日12:30显示信息提示午饭时间到了)
23 30 * * 5 backup_job (在每周5的23:30启动备份作业backup_job)
性能优化和内核参数调整
UNIX OS在使用过程中,随着环境和主要使用目的的变化,不能完全发挥其潜力,就需要对系统进行调整以适应新的需求。
作为系统管理员,其主要任务之一就是不停地监控和调整系统的整体性能,这是一项比较复杂的工作,往往涉及到系统的硬件,操作系统及主要业务应用程序等方面。
1 UNIX性能优
l 为什么会存在性能问题
计算机运行的应用程序的规模的不断扩大
应用程序类型的变化,例如一台适合超级计算的计算机,在其上进行大规模事务处理,这台计算机的I/O处理就成为系统性能的瓶颈。
l UNIX中常见的性能瓶颈
我们大致可以把计算机资源分成三种类型:计算能力(CPU)、可使用的内存和外部存储器的大小,以及系统的I/O。
ü 计算能力(CPU):CPU通过调度不同优先级的程序执行,使CPU的处理能力被多个用户程序所共享。计算密集型的应用程序往往占用较多的CPU时间。所以如果多个计算密集的程序同时运行,CPU就
可能成为系统瓶颈。
ü 可使用的内存和外存的大小:UNIX一般把外部存储介质以交换区的形式作为内存的后备存储区使用。当程序所需要的内存大于系统提供的数量时,系统就把一个进程的一部分移到磁盘上为另一进程腾出空间,如果内存仍不够,则把整个进程全部移到磁盘上。
ü I/O能力:I/O设备作为机械系统,其运行速度要慢几个数量级。当一个应用程序包含大量的I/O操作时,系统会等待I/O操作结束而处于等待状态。
2. 监视整个系统的性能
l 使用uptime命令监视系统状态
使用uptime命令是监视UNIX系统性能的简单方法。它显示在一定时间间隔内系统运行队列中进程的信息。通过这些信息可以大致地分析系统的工作负载。所以当系统性能下降时,首先应使用uptime命令来观察系统运行队列中进程的情况。
% uptime
2:07 pm up 11 day(s), 4:54, 15 users, load average: 1.90, 1.98, 2.01
其中有用的信息是三个负载的平均值:1.90、1.98和2.01分别是前1分钟、5分钟和15分钟内的负载平均值。
系统管理员需要定期运行uptime命令以观察系统的平均负载值及其变化趋势。系统的问题往往通过上述数据反映出来。当系统负载增大时,说明多条命令被阻塞在内存和I/O系统中。这时需要检查系统的有关信息。一般UNIX系统,负载为2和3 表示轻载,5和6表示中等程度负载,10 以上为过载。不同系统的划分标准是不同的。系统管理员应根据实际情况确定自己系统中划分轻载和过载的界限。
l 使用ps命令监视进程
在性能监视过程中,ps命令是一个最有用的工具,它监视系统内活动进程的状态。可以用来检查是否因为某个进程对资源的大量使用导致系统性能的下降。使用ps命令可以获得在某一瞬间系统内部活动进程的情况。
首先,根据ID寻由同一用户发出的许多相似的任务。这些任务主要是由于用户运行的脚本在后台并发运多个命令造成的,可以用kill命令终止这些任务。
然后检查TIME域中积累的各进程的CPU时间。如果某进程积累了大量的CPU时间,说明该进程陷入了无限循环或出现了逻辑错误。要老率是否终止该进程。
使用 ps –l 检查SZ域中进程消耗的内存数量。如果某进程占用了大量内存,要查明原因,原因不明时考虑终止该进程。同时可以使用vmstat或sar –wpgr命令斤秒年厘时秒系统有关换页和交换的情况。
如果一个进程使用了大量的CPU资源,使用 ps –l 检查该进程CLS域中的优先级是否过高,是则使用nice命令调整该进程的优先级。
3. 监视内存的使用
当程序运行需要的内存大于物理内存时,UNIX系统采用了调页机制,即系统copy一些内存中的页面到磁盘上,腾出来空间供进程
使用。大多数系统可以忍受偶尔的调页,但是频繁的调页会使系统性能急剧下降。
UNIX内存管理:UNIX系统通过2种方法进行内存管理,一种是“调页算法”,另一种是“交换技术”。调页算法是将内存中最近不常使用的页面换到磁盘上,把常使用的页面(活动页面)保留在内存中供进程使用。交换技术是系统将整个进程,而不是部分页面,全部换到磁盘上。正常情况下,系统会发生一些交换过程。当内存严重不足时,系统会频繁使用调页和交换,这增加了磁盘I/O的负载。进一步降低
了系统对作业的执行速度,即系统I/O资源问题又会影响到内存资源的分配。
使用vmstat监视内存性能:该命令用来检查虚拟内存的统计信息,并可显示有关进程状态、空闲和交换空间、调页、磁盘空间、CPU负载和交换,cache刷新以及中断等方面的信息。
4.监视磁盘系统的性能
磁盘操作是程序执行中最慢的操作。在关系数据库使用的系统中,磁盘操作的性能在计算机系统的整体性能中的地位是很高的。因此UNIX系统调整的主要目标之一就是怎样减少不必要的或效率低的磁盘I/O操作。
大多数与磁盘性能相关的变量主要是关于磁盘的特性(如转速和磁头移动速度等),I/O控制卡、I/O固件和软件以及系统的I/O背板等。
使用df命令监视文件系统:系统运行中遇到的最大也是最常见的问题就是用完了磁盘空间,尤其是/tmp和/usr空间。究竟应分配多大,也没有一个具体的答案。使用df命令可以显示每个已安装磁盘上的可用空间。
5.监视网络性能
与其他系统资源(如CPU、磁盘容量等)一样,网络也是一种有限的资源。通过执行一些命令,用户可以直接检查网络的带宽。
使用netstat监视网络性能:使用该命令,不加任何选项时,可以检查网络的负载情况。其中的域Send-Q比较重要,它反映了发送包队列的长度。如果该值十分大且在某些连接上不断增加,说明网络出现了故障。使用带-s的选项可以显示网络支持的每一种协议(如UDP,IP,TCP)的统计信息,这些信息可以用来分析协议中出现的问题。使用带-i的选项可以监视网络的性能并可以报告一些网络内部的信息,可以报告计算机发送和接收数据包的个数以及网络上碰撞和错误的情况。频繁地发生“碰撞”和错误,则会降低网络的性能。
6.内核调整
内核调整是一项复杂的技术。UNIX操作系统中最关键的部分就是内核,它管理各个主要的子系统,包括内存、磁盘I/O、CPU的使用以及进程调度等。系统为用户工作的控制核心。
内核调整对系统性能会有积极影响,也可能有消极影响。每个内核模块中都有多个参数可调。调整参数的

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。