系统进程监控
Unix能够监控进程执行,并且能够有限的制定执行优先级。这样做,可以控制CPU时间分配并间接控制内存的使用。
1、uptime命令:
uptime
3:24pm up 2 days, 2:41,16 users,load average:1.90,1.43,1.33
Uptime命令将会报告当前时间、系统运行时间以及三个负荷均值,负荷均值是对CPU使用量的粗略度量。这三个均值分别报告了最后1分钟、最后5分钟、最后15分钟的平均活动进程数,均值较高通常意味着系统比较繁忙。多大均值算高呢?通常取决于具体的系统。理想的负载负荷应该在3-5以下。更进一步,相同的负荷均值,对于不同的系统运行也不一样。例如有些工作站运行X窗口时占用单个CPU的后台作业,也会使相应时间变慢,虽然此时系统的平均负荷依然比较低。因此CPU的可用性只是影响系统性能的一个因素,所以低负荷均值并不能保证快速的响应时间。
2、PS命令与TOP命令:
Ps命令可以提供一个完整的系统活动状况,该命令的控制选项可以列出需要现实的进程的详细信息。
在基于BSD的系统中可以使用ps aux形式命令来获得所有进程列表,该列表按照使用CPU的百分比大小进行排序。在基于System V(如:IBM-AIX系列以及HP-UNIX系列)的系统中该列表按照进程的PID进行排序。具体的PS命令输出如下:
User(BSD) 进程所有者用户名
UID(System V)
PID 进程ID
%CPU 估计的CPU消耗百分比
%MEM 估计的系统内存消耗百分比
SZ 使用的虚拟内存
RSS 使用的物理内存
TT,TTY 和进程关联的TTY
STAT(BSD) 当前进程状态,下力值中的一个:
S(System V) R 正在运行的进程
S 休眠
I 空闲
T 停止
Z 死进程
D 等待磁盘
X(System V) 增长,等待内存
K(AIX) 可用内存进程
W(BSD) 被换出
N(BSD) 执行nice命令降低了优先级
< (BSD) 执行了nice命令人工提升了优先级
TIME 使用的总CPU时间
COMMAND 进程执行的命令
STIME(System V) 进程开始的时间或日期
START (BSD)
F 进程标志
PPID 父进程的ID
NI 进程优先级
C (System V) CPU使用因子,调度程序靠它来计算执行优先级
CP(BSD)
PRI 实际的进程优先级(动态地重新计算)
WCHAN 指定进程所等待的事件
TOP命令会显示系统运行时间、总的进程数和当前的CPU、内存、交换空间的使用量,并且会按照CPU的使用量进行排序。默认情况下TOP命令每5秒钟进行一次刷新,可以使用如下命令来指定刷新时间:
FreeBSD top –s 8
Linux top d8
HP-UNIX top –s 8
TOP会持续的运行直到用户按下q键。大多数版本的TOP还允许和显示的进程进行交互(HP-UNIX的TOP的命令只用于显示),当按下k和r键分别可以结束进程以及重新指定进程优先级。对于这两种情况TOP命令都将会提示输入需要进行改变的进程PID。
3、/Proc文件系统:
大多数Unix系统(HP-UNIX)除外和所有的Linux系统都支持/proc文件系统,在大多数系统上,/proc文件系统完全由编号的文件或者子目录组成,他们都以对应的进程PID命名。Linux对/proc文件系统进行了扩展,包含了许多保存系统设置和当前系统数据的其他文件和子目录。例如cpuinfo文件包含了处理器信息,使用cat /proc/cpuinfo命令可以查看当前系统的处理器信息。
此外/proc下还包含许多子目录,这些子目录中也包含了大量有关系统的重要信息。比如sys子目录下提供了对内和变量的访问,可以修改其中的一些文件,来更改内和变量的默认值。但是此操作一定要相当谨慎。
4、进程资源限制:
Unix提供了非常简单的进程资源限制命令。资源限制分为两种类型:软限制和硬限制。软限制是创建新进程时默认应用的资源限制。用户可以增加该值,最大为系统的硬限制,再往上只能由超级用户来增加。硬限制是资源使用的绝对最大值。
以bash shell为例可以使用ulimited –a来显示当前系统资源的软限制,使用ulimited –Ha来显示当前系统的硬限制。可以使用如下命令设置各种资源限制:
ulimit –t 单位:秒 CPU使用时间
ulimit –f 单位:kb 最大文件尺寸
ulimit –d 单位:kb 最大进程数据段
ulimit –s 单位:kb 最大进程堆栈段
ulimit –m 单位:kb 最大物理内存
ulimit –c 单位:kb 最大核心文件尺寸
ulimit –u 单位:n 最大进程数
ulimit –v 单位:kb 最大虚拟内存
命令事例:ulimit –t unlimited 设置CPU使用时间为无限
ulimit –m 65536 设置最大物理内存使用量为64MB
通常将不经常使用核心文件的普通用户的核心文件大小限制设置为0,比较可取,因为这样可以防止这些用户创建该文件。
在AIX中可以通过修改文件/etc/security/limits文件,来更改进程资源限制。或者可以通过chuser命令来改变用户的进程资源限制。如:chuser rss=10240 wangcai,将wangcai用户的最大物理内存使用量置为10M。(具体资源限制参数可以去查看联机帮助手册)。
5、结束进程:
在Unix或者Linux系统中可以使用kill命令来结束一个进程,改命令以进程PID为参数。如果使用该命令无法结束一个进程,可以使用kill -9 PID命令来强行结束一个进程。一般情况下这肯定能够销毁一个进程,但是该命令不能使进程在退出前进行必要的清理工作,因此可能使进程处理的文件处于不协调的状态。另外对挂起的进程必须首先恢复,然后才能使用kill命令来结束。
大多数系统还提供了killall命令来一次结束多个进程。对于Linux和FreeBSD系统还提供了killall的增强版本,使该命令可以接受第二个参数,如:killall –kill find该命令可以结束所有正在运行find命令的进程。