发新话题
打印

【申请加精】来自UC的《Solaris 10红宝书》系列在线课程

本主题由 otto 于 2008-4-15 09:22 加入精华
14.4.4 改变和删除Quota设置
下面简要介绍一些改变和删除Quota设置的命令。

(1)改变时间限额设置:

# edquota -t

(2)改变用户限额限额设置:

#edquota username

(3)检查用户限额设置是否正确:

#edquota -v [用户名]

(4)关闭quota服务:

#quotaoff [quota根目录]      

TOP

14.5 系统资源的定时调用   
Solaris操作系统支持系统资源的定时调用。本节将介绍系统管理员如何通过相关命令和设置,按照事先定好的时间调用系统资源。

14.5.1 系统资源的循环定时调用
可以使用crontab将系统设定在每天、每周和每月的某个时刻自动运行某个命令或者应用程序,实现系统资源的循环定时调用。在不需要人工干预的情况下,还可以设定好将系统执行信息记录在某个文件之中,我们定期查看这些文件,以了解系统执行情况。

1.crontab命令的使用
命令介绍:

crontab

参数:

 -e:执行文字编辑器来设定时程表,内定的文字编辑器是VI。

 -r:删除目前的时程表。

 -l:列出目前的时程表。

时程表的格式如下:

f1 f2 f3 f4 f5 program

具体解释如下:

 其中f1是表示分钟,f2表示小时,f3表示一个月份中的第几日,f4表示月份,f5表示一个星期中的第几天。program表示要执行的程序。

 当f1为*时表示每分钟都要执行program,f2为*时表示每小时都要执行程序,其余类推。

 当f1为a~b时表示从第a分钟到第b分钟这段时间内要执行,f2为a~b时表示从第a到第b小时都要执行,其余类推。

 当f1为*/n时表示每n分钟个时间间隔执行一次,f2为*/n表示每n小时个时间间隔执行一次,其余类推。

 当f1为a, b, c,…时表示第a, b, c,…分钟要执行,f2为a, b, c,…时表示第a, b, c…个小时要执行,其余类推。

使用者也可以将所有的设定先存放在档案file中,用crontab file的方式来设定时程表。

 例14-25 使用crontab实现定时执行。

每月每天每小时的第0分钟执行一次/bin/ls:

0 * * * * /bin/ls

在12月内,每天早上6点到12点钟之间,每隔20分钟执行一次/usr/bin/backup:

0/20 6-12 * 12 * /usr/bin/backup

周一到周五每天下午5:00寄一封信给aleex@domain.name

0 17 * * 1-5 mail -s "hi" aleex@domain.name < /tmp/maildata

每月每天的午夜0点20分,2点20分,4点20分……执行echo "haha":

20 0-23/2 * * * echo "haha"

2.如何控制用户使用crontab命令
控制使用crontab命令的文件存在/etc/cron.d目录下,即cron.deny和cron.allow两个文件。这两个文件与用户名相联系,一个用户名在文件中列为一行。控制文件是这样工作的:

 如果cron.allow文件存在,只有列在文件中的用户才能创建、编辑、显示和删除crontab文件。

 如果cron.allow不存在,除列在cron.deny文件中用户名的用户外,所有用户都能创建、编辑、显示和删除crontab文件。

 如果cron.allow和cron.deny文件都不存在,只有超级用户才能使用crontab命令。

cron.deny文件系统初始化安装时就已经存在,cron.deny默认的内容如下:

$ cat /etc/cron.d/cron.deny

daemon

bin

smtp

nuucp

listen

nobody

noaccess

列在cron.deny中的用户都不能使用crontab命令。你可以编辑文件以添加或删除用户名。

而cron.allow文件在默认情况下是不存在的,必须由用户创建。所以,当系统刚安装好后,除了列在cron.deny用户外,其他所有用户都可以使用crontab命令。如果你建立cron.allow文件,那么就只有列在这个文件中的用户可以使用crontab命令。      

TOP

14.5.2 系统资源的一次性定时调用
使用at命令,可以使系统在以后的某个时刻执行一项命令或程序,从而实现系统资源的调用。

1.at命令的使用
命令介绍:

$ at [-m] time [date]

参数:

 -m执行完后给执行用户邮件通知。

 time执行命令的时间,以小时或分钟表示。

 data执行命令的时间,以天数表示。

 例14-26 使用at命令实现定期执行任务。

(1)创建定期执行的任务。

在下午19:30分执行删除/home/jones/*.backup文件的任务:

$ at -m 1930

at> rm /home/jones/*.backup

at> Press Control-D

job 897355800.a at Thu Jul 12 19:30:00 2004

(2)显示定期执行任务队列。

使用atq命令可以查看任务队列:

$ atq

Rank Execution Date Owner Job Queue Job Name

1st Jul 12, 2004 19:30 jones 897355800.a a stdin

2nd Jul 14, 2004 23:45 jones 897543900.a a stdin

3rd Jul 17, 2004 04:00 jones 897732000.a a stdin

(3)显示定期执行的任务。

$ at -l

897543900.a Sat Jul 14 23:45:00 2004

897355800.a Thu Jul 12 19:30:00 2004

897732000.a Tue Jul 17 04:00:00 2004

(4)删除定期执行的任务。

先显示定期执行任务,再用at –r命令来删除:

$ at -l

897543900.a Sat Jul 14 23:45:00 2003

897355800.a Thu Jul 12 19:30:00 2003

897732000.a Tue Jul 17 04:00:00 2003

$ at -r 897732000.a

$ at -l 897732000.a

at: 858142000.a: No such file or directory

2.如何控制用户使用at命令
通过/etc/cron.d目录下的at.deny文件,我们可以控制使用at命令的用户。这个文件与用户名相关,一个用户名在文件中列为一行。凡是列入这个文件的用户,都禁止使用at命令。

系统安装好后,at.deny就已经默认存在了。它包含下列用户名:

daemon

bin

smtp

nuucp

listen

nobody

noaccess

超级用户可以编辑at.deny文件,以增加和删除用户。      

TOP

第15章 系统性能的监控与进程的管理

监测和管理系统性能是系统管理员一项非常重要的任务。监测结果可以判断当前用户的应用和系统服务是否有效执行;管理系统进程是系统性能调优的重要手段。本章将介绍系统性能的监控和进程的管理方法。      

TOP

15.1 监控系统性能   
Solaris提供了许多监控工具来监控设备和核心部件的运行情况。本节将介绍一些传统的监控工具。值得一提的是,Solaris 10推出的dtrace超越了传统的UNIX系统提供的性能工具,可以用dtrace的sysinfo provider来完成所有的性能分析工作。有关dtrace的详细介绍,请参见第18章。

15.1.1 虚拟内存的统计显示
可以使用vmstat命令来报告虚拟内存的统计信息和系统事件信息,如CPU负载、内存分页、设备中断、系统调用等。此外,vmstat命令还可以显示SWAP区交换、缓存和中断的统计信息。vmstat命令的具体内容请参见表15-1。

表15-1 vmstat命令的输出

种 类
具体内容
描 述

procs


报告下列内容



r
等待运行的进程数

b
处在非中断睡眠状态的进程数

w
被交换出去的可运行的进程数

memory


报告真正内存和虚拟内存的使用情况



swap
可用的交换空间,单位为KB

free
空闲的内存,单位为KB





续表

种 类
具体内容
描 述

page


报告页面错误和换页活动,单位为秒。



re
回收的页面

mf
非严重错误的页面

pi
进入页面数(单位:k)

po
出页面数(单位:k)

fr
空余的页面数(单位:k)

de
提前读入的页面中的未命中数

sr
正在被page后台程序扫描的页面。如果它不为0,说明page后台程序正在运行。

disk


显示每秒磁盘操作的次数,显示数据最大的四个盘片。

fault


显示每秒的中断数



in
设备中断

sy
系统中断

cy
cpu交换

cpu


表示cpu的使用状态



cs
用户进程使用的时间

sy
系统进程使用的时间

id
cpu空闲的时间


1.显示虚拟内存的统计信息
使用vmstat n命令可以显示虚拟内存的统计信息,其中n为每次报告的时间间隔秒数。

 例15-1 使用vmstat命令每5秒报告一次虚拟内存信息。

$ vmstat 5

kthr memory page disk faults cpu

r b w swap free re mf pi po fr de sr dd f0 s1 -- in sy cs us sy id

0 0 0 863160 365680 0 3 1 0 0 0 0 0 0 0 0 406 378 209 1 0 99

0 0 0 765640 208568 0 36 0 0 0 0 0 0 0 0 0 479 4445 1378 3 3 94

2.显示系统事件的信息
 例15-2 使用vmstat –m来显示系统启动以后发生的多个系统事件信息。

$ vmstat -s

0 swap ins

0 swap outs

0 pages swapped in

0 pages swapped out

522586 total address trans. faults taken-----地址解析错误数量

17006 page ins

25 page outs

23361 pages paged in

28 pages paged out

45594 total reclaims

45592 reclaims from free list

0 micro (hat) faults

522586 minor (as) faults

16189 major faults

98241 copy-on-write faults

137280 zero fill page faults

45052 pages examined by the clock daemon

0 revolutions of the clock hand

26 pages freed by the clock daemon

2857 forks

78 vforks

1647 execs

34673885 cpu context switches

65943468 device interrupts

711250 traps

63957605 system calls

3523925 total name lookups (cache hits 99%)

92590 user cpu

65952 system cpu

16085832 idle cpu

7450 wait cpu

3.显示交换数据统计信息
 例15-3 显示交换数据统计信息。

$ vmstat -S

kthr memory page disk faults cpu

r b w swap free si so pi po fr de sr dd f0 s1 -- in sy cs us sy id

0 0 0 862608 364792 0 0 1 0 0 0 0 0 0 0 0 406 394 213 1 0 99

4.显示系统中每个设备的中断信息
 例15-4 显示系统中每个设备的中断信息。

$ vmstat -i

interrupt total rate

------------------------------------------------------------------------------------------

clock 52163269 100

esp0 2600077 4

zsc0 25341 0

zsc1 48917 0

cgsixc0 459 0

lec0 400882 0

fdc0 14 0

bppc0 0 0

audiocs0 0 0

------------------------------------------------------------------------------------------

Total 55238959 105      

TOP

15.1.2 显示磁盘的使用信息
使用iostat命令可以报告磁盘的输入/输出(I/O)的统计信息,并检测磁盘的吞吐量、利用率、队列、处理速率和服务时间。

1.显示磁盘的利用率信息
 例15-5 每5秒钟采集一次磁盘使用信息。

$ iostat 5

tty sd0 sd6 nfs1 nfs49 cpu

tin tout kps tps serv kps tps serv kps tps serv kps tps serv us sy wt id

0 0 1 0 49 0   0 0 0 0 0 0 0 15 0 0 0 100

0 47 0 0 0 0  0 0 0 0 0 0 0 0 0 0 0 100

表15-2列出显示信息的详细解释。

表15-2 显示信息的详细解释

设备类型
具体内容
描 述

终端
tin
在终端输入队列中的字符数量

tout
在终端输出队列中的字符数量

磁盘
kps
表示每秒传送的比特率      

TOP

15.1.2 显示磁盘的使用信息
使用iostat命令可以报告磁盘的输入/输出(I/O)的统计信息,并检测磁盘的吞吐量、利用率、队列、处理速率和服务时间。

1.显示磁盘的利用率信息
 例15-5 每5秒钟采集一次磁盘使用信息。

$ iostat 5

tty sd0 sd6 nfs1 nfs49 cpu

tin tout kps tps serv kps tps serv kps tps serv kps tps serv us sy wt id

0 0 1 0 49 0   0 0 0 0 0 0 0 15 0 0 0 100

0 47 0 0 0 0  0 0 0 0 0 0 0 0 0 0 0 100

表15-2列出显示信息的详细解释。

表15-2 显示信息的详细解释

设备类型
具体内容
描 述

终端
tin
在终端输入队列中的字符数量

tout
在终端输出队列中的字符数量

磁盘
kps
表示每秒传送的比特率

tps
每秒传送的次数

serv
平均服务的时间,毫秒

CPU
us
用户模式

sy
系统模式

wt
等待I/O

id
空闲


2.显示扩展磁盘的信息
 例15-6 显示扩展磁盘信息。

$ iostat -xtc

extended device statistics tty cpu

device r/s w/s kr/s kw/s wait actv svc_t %w %b tin tout us sy wt id

fd0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0 0 0 0 0 0 0 100

sd0 0.0 0.0 0.4 0.4 0.0 0.0 49.5 0 0

sd6 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0 0

nfs1 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0 0

nfs49 0.0 0.0 0.0 0.0 0.0 0.0 15.1 0 0

nfs53 0.0 0.0 0.4 0.0 0.0 0.0 24.5 0 0

可见,也采集了远程NFS的磁盘信息。

每一列数据的具体意思为:

 device:显示设备名。

 r/s:每秒读磁盘的次数。

 w/s:每秒写磁盘操作的次数。

 kr/s:显示每秒读数据总量(单位为KB)。

 km/s:显示每秒写数据总量(单位为KB)。

 wait:显示平均的等待事物数量。

 actv:显示正在处理的平均事物数量。

 svc_t:显示平均服务周期(单位为ms)。

 %w:显示等待时间的百分数。

 %b:显示磁盘工作时间的百分数。

15.1.3 显示CPU负载信息
下面的命令是每5秒产生两次处理器的统计数据报告。命令显示了处理器集合与每个CPU的成员关系。默认用户和系统操作的输出是按照CPU号,处理器集合排序。默认用户和系统操作的输出是按照CPU号或者处理器集合排序的。(本例中是按处理器集合排序的。)

 例15-7 使用mpstat命令显示cpu负载。

e




SET
minf
mjf
xcal
intr
ithr
csw
icsw
migr
smtx
srw
syscl
usr
sys
wt
idl
sze

0
6
0
355
291
190
22
0
0
0
0
43
0
2
55
43
1

1
24
17
534
207
200
70
1
0
2
0
600
4
1
11
84
2

2
19
7
353
325
318
44
0
0
5
0
345
1
1
4
94
3

3
36
2
149
237
236
14
0
0
4
0
97
0
0
1
98
2

SET
minf
mjf
xcal
intr
ithr
csw
icsw
migr
smtx
srw
syscl
usr
sys
wt
idl
sze

0
1
0
720
405
304
55
0
0
18
0
12
0
15
4
81
1

1
0
69
1955
230
200
313
33
4
41
9
7086
34
10
37
19
2

2
0
46
685
314
300
203
11
0
54
1
5287
36
6
30
28
3

3
0
0
14
386
384
0
0
0
0
0
0
0
0
0
100
2




xample% mpstat -ap 5 2































每列输出的意思见表15-3。




表15-3 mpstat输出说明

变 量
说 明

SET
SET是处理器集合

minf
一般错误的个数

mjf
主要错误的个数

xcal
处理器间的交叉调用

intr
中断

ithr
线程中断,不包括时钟中断

csw
上下文切换数

icsw
非主动的上下文切换数

migr
转移到其他CPU的线程数

smtx
在互斥锁mutexes上的自旋(第一次试图获得锁,未果)的次数

srw
在读/写锁上自旋(第一次试图获得锁,未果)的次数

syscl
系统调用

usr
用户时间百分比

sys
系统时间百分比

wt
等待时间百分比

idl
CPU空闲时间百分比

sze
请求的处理器集合中的处理器个数


有关mpstat输出的几点说明:

 CPU占用率的统计由于舍入错误,可能存在百分比数字的总和不是100的情况。

 CPU处理的总时间是用户和系统操作报告的usr和sys值的和。而wt报告的值是处理器空闲等待IO操作的时间。idl报告的值是CPU因除去等待磁盘IO操作外其他任何原因而空闲的时间。所以,CPU空闲的时间总数应该是wt和idl输出值之和。

 wt的值高意味着磁盘系统的问题,不是CPU和其他部分的问题。过高的wt时间百分比必须通过提高磁盘设备性能来解决。

 当在一个分区(zone)里执行,如果pools facility处于活动状态,mpstat将只提供属于zone绑定的pool的处理器集合的成员的那些处理器的信息。

15.1.4 监控系统活动信息
收集系统性能数据的一种最通用的方法是使用sar命令。sar命令功能强大,参数众多。sar命令的常用格式:

sar [options] [-A] [-o file] t [n]

在命令行中,n和t两个参数组合起来定义采样间隔和次数:t为采样间隔,是必须有的参数;n为采样次数,是可选的,默认值是1。-o file表示将命令结果以二进制格式存放在文件中,file在此处不是关键字,是文件名。options为命令行选项,sar命令的选项很多,下面只列出常用选项:

 -A 所有报告的总和。

 -u CPU利用率。

 -v 进程、I节点、文件和锁表状态。

 -d 硬盘使用报告。

 -r 没有使用的内存和swap硬盘块。

 -g 串口I/O的情况。

 -b 缓冲区使用情况。

 -a 文件读写情况。

 -c 系统调用情况。

 -R 进程的活动情况。

 -y 终端设备活动情况。

 -w 系统交换活动。

 例15-8 使用sar命令,每60秒采样一次,连续采样5次,观察CPU的使用情况,并将采样结果以二进制形式存入当前目录下的文件text中。

# sar -u -o text 60 5

SCO_SV scosysv 3.2v5.0.5 i80386 10/01/2001

14:43:50 %usr %sys %wio %idle(-u)

14:44:50 0 1 4 94

14:45:50 0 2 4 93

14:46:50 0 2 2 96

14:47:50 0 2 5 93

14:48:50 0 2 2 96

Average 0 2 4 94

对显示内容进行解释:

 %usr CPU处在用户模式下的时间百分比。

 %sys CPU处在系统模式下的时间百分比。

 %wio CPU等待输入输出完成时间的百分比。

 %idle CPU空闲时间百分比。

在上面的显示内容中,我们应特别注意%wio和%idle值。%wio的值过高,表示硬盘存在I/O瓶颈;%idle值高,表示CPU较空闲。如果%idle值高但系统响应慢时,有可能是CPU等待分配内存,此时应加大内存容量;%idle值如果持续低于10,那么系统的CPU处理能力相对较低,表明系统需要更换处理能力更强的CPU。

如果要查看二进制文件text中的内容,则需键入如下sar命令:

# sar -u -f text

可见,sar命令既可以实时采样,又可以对以往的采样结果进行查询。

sar命令的用法很多,有时判断一个问题,需要结合运行有不同选项sar命令,比如,怀疑CPU存在瓶颈,可用sar -u和sar -q来看;怀疑I/O存在瓶颈,可用sar -b、sar -u和sar-d来看。对于sar命令其他参数的使用请读者自己去参考使用,这里不再多说。      

TOP

15.2 系统进程的管理   
优化管理系统进程可在不增加更多的硬件资源的情况下,提升系统性能。本节主要介绍系统进程的优化管理。

15.2.1 进程管理概述
众所周知,Solaris是个多用户多任务的操作系统,多用户多任务就意味着有更多的进程。为了统一管理系统上正在运行的进程,所有进程都被赋予一个惟一的标志号(PID),内核根据PID来跟踪和管理进程。PID也可以被root和普通用户用来标识和控制他们的进程。

要运行程序,必然要为其分配其相应的资源。我们监控进程,目的是在保证应用服务可以有效地进行的同时,消耗与服务相适应的资源。整个系统的稳定运行,也依赖于对资源的合理分配。经验证明,系统性能的降低往往是因为应用程序所产生的某些进程消耗了过多的系统资源。

系统进程的管理,是系统管理员的基本工作之一。主要是检查那些没有必要而长期占用资源的进程。处理这些问题进程的方法通常是将它们关闭。在管理进程的时候需要特别注意不要轻易杀死系统本身的进程,这样有可能造成系统的故障甚至崩溃。

15.2.2 进程管理的方法介绍
1.使用ps命令报告进程状态
使用ps命令报告进程状态,可以确定哪个进程正在进行;查看一个进程是否完成;查看一个进程是被挂起了还是遇到困难了;确定进程已经运行了多久;查看进程使用的资源;在杀掉一个进程前找到它的PID。所有这些对用户和系统管理员均有用处。

用户用不带任何参数的ps命令来查看自己的进程列表,不包括任何系统或其他用户的进程。如下:

$ ps

PID TTY TIME CMD

1664 pts/4 0:06 csh

2081 pts/4 0:00 ps

默认的ps列表内容一般只包括:进程标志号(PID)、执行命令的终端(TTY)、进程的CPU耗时(TIME),以及执行的命令(CMD)。

表15-4总结了ps命令的主要选项。




表15-4 ps命令的主要选项

选 项
说 明

-a
列出最常被请求的进程

-A,-e
列出所有进程

-c
以调度程序格式列出进程

-d
列出所有进程

-f
打印进程的详细信息

-g
打印指定用户组的进程信息

-G
以组为单位打印不同用户组的信息

-j
在输出中包括SID和PGID

-l
打印完整的进程信息

-L
显示LWP的详细资料

-p
根据指定进程列表列出进程的详细资料

-P
列出进程绑定的CPU ID

-s
列出会话线索

-t
列出与特定终端有关的所有进程

-u
列出与一个特定用户有关的所有进程


显示系统进程时最常用的命令就是ps –ef。-e参数是列出系统中所有的进程,-f参数是列出进程的细节信息。

$ ps -ef

UID PID PPID C STIME TTY TIME CMD

root 0 0 0 Dec 20 ? 0:17 sched

root 1 0 0 Dec 20 ? 0:00 /etc/init -

root 2 0 0 Dec 20 ? 0:00 pageout

root 3 0 0 Dec 20 ? 4:20 fsflush

root 374 367 0 Dec 20 ? 0:00 /usr/lib/saf/ttymon

……

其中,UID为进程拥有者的用户ID;PPID为父进程的ID;C为处理器的利用率;STIME为进程开始的时间;TTY为进程或者它的父进程开始的终端。

另外,在综合反映系统进程的工具中,top也不错,它可对进程按照CPU负载的大小进行排序。限于篇幅,这里不再展开。

2.使用proc工具操作数据
proc工具主要用来操作/proc文件系统中数据。每个工具都以PID为参数,并执行与该PID相关的操作。proc工具的命令列在表15-5中。

表15-5 proc工具命令列表

进程命令
描 述

pcred
显示进程的可信度


续表

进程命令
描 述

Pfiles
显示已打开文件的fstat和fcntl信息

pflags
显示每个lwp的/proc跟踪标志,等待和待有信号量及其他状态信息

pldd
显示链接到每个进程的动态链接库

pmap
显示地址映射空间

psig
显示信号操作

pstack
显示每个lwp的十六进制与符号堆跟踪

ptree
显示包含指定PID的进程树

pwdx
显示当前工作目录

pstop
停止进程

prun
重新启动进程

ptime
使用微状态计算进程时间

pwait
等待指定的进程终止


 例15-9 分析cron进程。

(1)查找cron的进程号:

# pgrep cron

4780

(2)显示cron进程工作的目录:

# pwdx 4780

4780: /var/spool/cron/atjobs

(3)显示进程树:

# ptree 4780

4780 /usr/sbin/cron

(4)显示已打开文件的fstat和fcntl信息,这对于确定数据文件和应用程序之间的依赖关系十分有用。

# pfiles 4780

4780: /usr/sbin/cron

Current rlimit: 256 file descriptors

0: S_IFCHR mode:0666 dev:290,0 ino:6815752 uid:0 gid:3 rdev:13,2

O_RDONLY|O_LARGEFILE

/devices/pseudo/mm@0:null

1: S_IFREG mode:0600 dev:32,128 ino:42054 uid:0 gid:0 size:9771

O_WRONLY|O_APPEND|O_CREAT|O_LARGEFILE

/var/cron/log

2: S_IFREG mode:0600 dev:32,128 ino:42054 uid:0 gid:0 size:9771

O_WRONLY|O_APPEND|O_CREAT|O_LARGEFILE

/var/cron/log

3: S_IFIFO mode:0600 dev:32,128 ino:42049 uid:0 gid:0 size:0

O_RDWR|O_LARGEFILE

/etc/cron.d/FIFO

4: S_IFIFO mode:0000 dev:293,0 ino:4630 uid:0 gid:0 size:0

O_RDWR|O_NONBLOCK

5: S_IFIFO mode:0000 dev:293,0 ino:4630 uid:0 gid:0 size:0

O_RDWR

 例15-10 启动和关闭dtpad进程。

(1)显示dtpad进程PID:

# pgrep dtpad

2921

(2)停止进程:

# pstop 2921

(3)重新启动进程:

# prun 2921

3.终止进程
当某个进程处于死循环,或者进程运行时间比较长的时候,管理员或用户就需要结束这些进程。一般而言,用户可以结束他自己的任何进程;超级用户可以结束除了PID为1、2、3和4的其他任何进程。结束进程需要小心谨慎,否则可能会导致系统的崩溃。

kill命令

使用kill命令可以终结进程,用法如下:

$ kill [signal-number] pid

其中,signal-number为信号,如果不用信号时,系统默认发送信号15(SIGKILL),可以终结进程;使用-9时可快速终结进程,建议在结束数据库或LDAP等进程时不要使用,因为这样可能会导致数据的丢失。

表15-6总结了kill命令在进行进程间通信时使用的主要信号。

表15-6 kill命令在进行进程间通信时使用的主要信号

信 号
代 号
行 为
描 述

SIGHUP
1
退出
挂起

SIGINT
2
退出
中断

SIGQUIT
3
核心
退出

SIGILL
4
核心
非法指令

SIGTRAP
5
核心
追踪

SIGABRT
6
核心
中止

SIGEMT
7
核心
仿真陷阱


续表

信 号
代 号
行 为
描 述

SIGFPE
8
核心
算术异常

SIGKILL
9
退出
已取消

SIGBUS
10
核心
总线错误

SIGSEGV
11
核心
段错误

SIGSYS
12
核心
异常系统调用

SIGPIPE
13
退出
断开通道

SIGALRM
14
退出
报警时钟

SIGTERM
15
退出
终止


pkill命令

使用pkill命令也可以终止进程,它搜索与命令行指定字符相匹配的进程,并给这些进程发信号。比如,希望取消进程名与“Java”有关的所有进程,可以使用下面的命令:

$pkill –9 Java

killall命令

killall命令用来取消系统中的所有进程。在系统运行级别为0时,由shutdown命令来调用killall命令。

4.进程管理
下面是一些在系统中可以设置的进程调度类。

 公平共享调度类:Fair share (FSS)

 固定调度类:Fixed (FX)

 系统调度类:System (SYS)

 交互调度类:Interactive (IA)

 实时调度类:Real-time (RT)

 分时调度类:Timesharing (TS)

用户的策略主要使用分时调度类进行进程管理,它的具体特性如下:

 具有用户的优先权队列,即从-60到+60。

 用户模式的优先权是可以从父进程继承的。

 系统在分时派分参数表中查看用户的优先权,然后使用nice或priocntl命令确保将其加入到全局优先权中。

可以通过dispadmin命令来进行进程调度类的管理,其选项列在表15-7中。

表15-7 dispadmin命令选项列表

选 项
说 明

-l
列出系统具有的调度类

-g
显示所指定调度类(以-c选项指定)的调度表

-r
设定系统时间的分辨率(resolution)

-s
以文件取代-c来指定调度类


 例15-11 显示系统的调度类。

# dispadmin -l

CONFIGURED CLASSES

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

SYS (System Class)

RT (Real Time)

TS (Time Sharing)

由这个指令的输出可以获知系统有哪些调度类,即使调度类名称被修改,也能由此知道。

在了解进程的调度级之后,我们介绍进程的优先权。优先权是在调度类框架下对进程的进一步的管理。

下面将介绍两个管理进程的优先权的命令:priocntl和nice。

priocntl命令

可以使用priocntl命令完成以下工作。

(1)显示进程调度类和优先权队列。

使用-l选项也可以显示进程的调度类信息:

# priocntl -l

CONFIGURED CLASSES

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

SYS (System Class)

TS (Time Sharing)

Configured TS User Priority Range: -60 through 60

FX (Fixed priority)

Configured FX User Priority Range: 0 through 60

IA (Interactive)

Configured IA User Priority Range: -60 through 60

使用-ecl选项在PRI栏目下可以显示进程的全局优先级:

$ ps -ecl

F S UID PID PPID CLS PRI ADDR SZ WCHAN TTY TIME COMD

19 T 0 0 0 SYS 96 f00d05a8 0 ? 0:03 sched

8 S 0 1 0 TS 50 ff0f4678 185 ff0f4848 ? 36:51 init

19 S 0 2 0 SYS 98 ff0f4018 0 f00c645c ? 0:01 pageout

19 S 0 3 0 SYS 60 ff0f5998 0 f00d0c68 ? 241:01 fsflush

8 S 0 269 1 TS 58 ff0f5338 303 ff49837e ? 0:07 sac

8 S 0 204 1 TS 43 ff2f6008 50 ff2f606e console 0:02 sh

(2)指定进程的优先级。

可以为某个进程指定一个优先级,比如:

# priocntl -e -c TS -m 60 -p 60 find . -name core –print

这个命令就是给find进程指定的优先级为60。其他参数选项的意义是:

 -e运行命令。

 -c指定进程的调度类,TS为分时调度类的简写,其他调度类依次类推。

 -m当使用-p选项时,-m选项为用户可以提高或降低的最大优先级的数量。

 -p用户设定的优先级数。

(3)如何改变进程的调度类。

 例15-12 改变uid为15249的用户所有进程的调度类。

# priocntl -s -c RT -i uid 15249

其中:

 -s改变当前的优先级。

 -c设定调度类,RT就是所设定的调度类。

 -I指定用户或进程的ID。

(4)如何使用nice改变分时调度类进程的优先级。

Solaris 10支持nice命令是为了和以前版本的Solaris兼容。现在,在管理进程这一方面priocntl命令是最合适的。nice命令的优先级队列从0到39,0代表最高的优先级。对于分时调度类nice的默认优先级是20。

由于数值越大,nice用户的优先级越低。一般用户可以通过增大数值的办法来降低进程的优先级。可以使用下面的命令:

$ /usr/bin/nice -5 command-name

只有超级用户或等同的角色用户才能增加进程的优先级。增加进程的优先级,可使用下面的命令:

# /usr/bin/nice --10 command-name      

TOP

第16章 Solaris 10系统资源的高级管理   
在第14章已经介绍系统资源的初级管理部分,这章我们来介绍系统资源的高级管理。      

TOP

16.1 资源容器   
资源容器是资源管理中的一个概念,用来形容比较封闭的自成一体的资源状态。在Solaris 10中引入资源容器的概念,目的就是更合理地划分资源,提高资源的使用效率。

当某个组织需要自己的虚拟环境(包括IP地址、磁盘存储空间和应用程序)时,容器是他们理想的选择。例如,公司可以为特定的应用设置容器,如邮件服务器、Web服务器或数据库。公司还可以根据地理区域(如中国、美国、欧洲和亚太地区)设置容器。同样,公司还可以为职能部门设置容器,如人力资源部门、研发部门和销售部门。

不同的行业会出于不同的目的而使用容器或区域。大学可以为每一位在校生提供一个区域,其中包括一个OS实例、一份系统资源和一个超级用户密码。无线公司可以为监视服务设置容器,如长途服务、本地电话服务和语音邮件。有线电视提供商或Internet服务提供商可以为DSL、电缆调制解调器或有线电视服务设置容器。金融机构可以分别为以下用户设置单独的容器:需要在数据库中进行复杂查询的用户,以及需要进行联机交易的用户。独立软件供应商(ISV)可以为购买其软件或服务的不同顾客分别设置容器或区域。

16.1.1 Solaris容器



图16-1 容器模型示意图



S






olaris容器是一个帮助组织和管理物理系统资源集合的抽象层。通过使用容器,可以为应用程序的资源要求创建一份详尽的蓝图。Solaris容器模型着重解决应用程序的资源要求,如图16-1所示。此模型的要务是合理分配服务或工作负荷。服务是由应用程序提供的,对系统而言则是工作负荷。工作负荷是一组相关的进程,如一个正在执行的应用程序。

图16-1中的盒子表示容器。在盒子周围,围绕“服务”沿x、y和z轴显示了三种资源。“服务”被限制在盒子中,表示该“服务”如何被包含在容器内。在此模型中,CPU、内存和带宽是基本资源。在Solaris 10中,容器管理器(Container Manager)可完全控制上述三种基本资源:CPU、内存和带宽。

16.1.2 Solaris容器与Solaris主机的关系

图16-2 容器和主机的关系图

在Solaris中,容器和主机的关系如图16-2所示。

多个容器可同时在一个主机上处于活动状态。如果一个主机上同时存在多个容器,可以设置容器的边界,便于主机扩展和约束它们。在这种情况下,其他容器当前未使用的资源对于能够使用它们的容器来说都是可用的。最终,能够在某个主机上处于活动状态的容器数将取决于CPU数量和可用内存资源,以及每个容器保留了多少这样的资源。系统必须能够满足所有活动的容器(由应用程序的需要决定)所需要的全部资源。

16.1.3 Solaris容器的属性
Solaris容器具有下列属性:

 名称

 描述(可选)

 项目类型

 与容器相关联的项目名称

 与容器应用程序相关联的Solaris用户和组

 匹配表达方式(如果存在的话)      

TOP

发新话题