今天看啥
热点:

Linux系统中的基本运行单位是进程,通过对系统系统中的进程的管理能够对系统的实时运行状态进行了解和调度。Linux中提供了用于查看、调整和停止进程的命令。本文仍然以RHEL6说明Linux系统的进程管理。

一、进程概述

程序是保存在存储介质中的可执行机器代码(或指令)和数据的集合,而进程是在计算机处理器执行中的计算机程序。他们的关系如下:

  • 程序是保存在外部存储介质中的可执行代码和数据,是静态保存的代码。
  • 进程是程序代码在处理器中的运行,是动态执行的代码。
  • 操作系统在执行程序时,将代码有外部存储介质(硬盘)读取到内部存储介质(内存)中,驻留在内存中的程序代码作为进程在CPU中被动态执行。
  • Linux是多进程操作系统,每个程序启动时可以创建多个进程,与其他程序创建的进程共同运行在Linux内核空间。每个进程都是一个独立的任务,它们一招操作系统内核制定的规则交替被CPU执行。每个单独的进程运行在自己的虚拟地址空间,并且只能通过安全的内核管理机制与其他进程进行交互。

在进程的生存期内将使用许多系统资源,它将使用CPU来运行指令,使用物理内存来保存执行代码和数据,它将打开和使用文件子系统中的文件,并直接或间接地使用系统中的物理设备。

二、查看进程

1、使用ps命令
常用参数:
a显示所有用户的所有进程(包括其它用户);
u按用户名和启动时间的顺序来显示进程;
x显示无控制终端的进程;
e显示所有进程,包括没有控制端的进程;
f用树形格式来显示进程;
l长格式输出;
w为了避免详细参数被截断,可以用多个w来让其显示完整(比如说ww或者是www);
o需要查看的选项

举例说明:

[root@Vtest ~]# ps aux|more

USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMANDroot 1 0.5 0.2 2864 1396 ? Ss 13:30 0:01 /sbin/initroot 2 0.0 0.0 0 0 ? S 13:30 0:00 [kthreadd]root 3 0.0 0.0 0 0 ? S 13:30 0:00 [migration/0]root 4 0.0 0.0 0 0 ? S 13:30 0:00 [ksoftirqd/0]root 5 0.0 0.0 0 0 ? S 13:30 0:00 [migration/0]root 6 0.0 0.0 0 0 ? S 13:30 0:00 [watchdog/0]root 7 0.0 0.0 0 0 ? S 13:30 0:00 [events/0]root 8 0.0 0.0 0 0 ? S 13:30 0:00 [cpuset]

ps命令输出中包含的信息:

USER:进程的属主;PID :进程的ID;PPID :父进程;%CPU :进程占用的CPU百分比;%MEM :占用内存的百分比;NI   :进程的NICE值,也就是进程的优先值(-20~19之间),数值越大,优先级越底;VSZ  :进程虚拟大小;RS   :驻留中页的数量;TTY  :终端ID。问号表示是无终端的,也就是系统本身。STAT :进程状态        D Uninterruptible sleep (usually IO)        R 正在运行可中在队列中可过行的;        S 处于休眠状态;        T 停止或被追踪;        W 进入内存交换(从内核2.6开始无效);        X 死掉的进程(从来没见过);        Z 僵尸进程;        <</strong> 优先级高的进程        N 优先级较低的进程        L 有些页被锁进内存;        s 进程的领导者(在它之下有子进程);        l 多线程 (using CLONE_THREAD, like NPTL pthreads do)        + 位于后台的进程组;WCHAN  :正在等待的进程资源;START  : 启动进程的时间;TIME   : 进程消耗CPU的时间;COMMAND: 启动进程的命令的名称和参数;

ps命令的其他用法:

(1)

[root@Vtest ~]# ps aux |grep httpd###查看httpd程序的进程

root 1879 0.0 1.6 33096 8548 ? Ss 13:31 0:00 /usr/sbin/httpdapache 1887 0.0 0.8 33096 4212 ? S 13:31 0:00 /usr/sbin/httpd

(2)

[root@Vtest ~]# ps axo pid,%cpu,%mem,comm |grep httpd##只查看pid,%cpu,%mem,comm这几项

1879 0.0 1.6 httpd1887 0.0 0.8 httpd1888 0.0 0.8 httpd

至于其他的参数,大家可以自行练习一下。

Tips:什么是僵尸进程。通常,造成僵尸进程的成因是因为该进程应该已经执行完毕,或者是因故应该要终止了, 但是该进程的父进程却无法完整的将该进程结束掉,而造成那个进程一直存在内存当中。如果你发现在某个进程的 CMD 后面还接上 时,就代表该进程是僵尸进程。当系统不稳定的时候就容易造成所谓的僵尸进程。也有可能是因为程序写的不完善,或者是使用者的操作习惯不良等等所造成。如果你发现系统中很多僵尸进程时,记得要找出该进程的父进程,然后做个跟踪排除问题!

2、top命令

top命令会在当前终端全屏显示系统运行信息,实时跟踪系统资源的使用情况,显示内容包括CPU、内存占用情况,系统运行进程的列表和每一个进程运行的状态等信息,对于分析系统运行中的问题很有帮助。

[root@Vtest ~]# top

以下是top某一刻的输出信息:

  1. top-14:01:40up31min,1user,loadaverage:0.04,0.01,0.00
  2. Tasks:122total,1running,121sleeping,0stopped,0zombie
  3. Cpu(s):0.0%us,0.3%sy,0.0%ni,99.3%id,0.0%wa,0.0%hi,0.3%si,0.0%st
  4. Mem:511140ktotal,283656kused,227484kfree,24136kbuffers
  5. Swap:2064376ktotal,0kused,2064376kfree,148144kcached
  6. PIDUSERPRNIVIRTRESSHRS%CPU%MEMTIME+COMMAND
  7. 2215root20026721116880R0.70.20:00.08top
  8. 2145root2001155233162580S0.30.60:00.25sshd
  9. 1root200286413961184S0.00.30:01.67init
  10. 2root200000S0.00.00:00.00kthreadd
  11. 3rootRT0000S0.00.00:00.00migration/0
  12. 4root200000S0.00.00:00.00ksoftirqd/0
  13. 5rootRT0000S0.00.00:00.00migration/0
  14. 6rootRT0000S0.00.00:00.00watchdog/0
  15. 7root200000S0.00.00:00.00events/0
  16. 8root200000S0.00.00:00.00cpuset
  17. 9root200000S0.00.00:00.00khelper
  18. 10root200000S0.00.00:00.00netns
  19. 11root200000S0.00.00:00.00async/mgr
  20. 12root200000S0.00.00:00.00pm
  21. 13root200000S0.00.00:00.00sync_supers
  22. 14root200000S0.00.00:00.00bdi-default
  23. 15root200000S0.00.00:00.00kintegrityd/0
  24. 16root200000S0.00.00:00.01kblockd/0
  25. 17root200000S0.00.00:00.00kacpid
  26. 18root200000S0.00.00:00.00kacpi_notify
  27. 19root200000S0.00.00:00.00kacpi_hotplug
  28. 20root200000S0.00.00:00.00ata/0
  29. 21root200000S0.00.00:00.00ata_aux
  30. 22root200000S0.00.00:00.00ksuspend_usbd
  31. 23root200000S0.00.00:00.00khubd

我们把输出信息划分为三部分:

1-5行为第一部分:

第1行:
top-14:01:40 : 当前时间,默认每三秒更新一次。
up31min:系统运行了多长时间,格式为时:分
1 user :当前登录用户数
load average: 0.00, 0.00, 0.00系统负载,即任务队列的平均长度。三个数值分别为 1分钟、5分钟、15分钟前到现在的平均值。

第2行:
Tasks:122total :系统总的进程数
1running:正在运行的进程数
121sleeping:休眠状态的进程数
0stopped:停止的进程数
0zombie :僵尸进程数

第3行:
Cpu(s): 0.0%us(user mode)用户所占用CPU百分比
0.3%sy(system mode)内核所占用CPU百分比
0.0%ni(nice)用户进程内改变过优先级的进程占用CPU百分比
99.3%id (idle task) 空闲CPU百分比
0.0%wa(I/O waiting)等待输入输出的CPU时间百分比(I/O 产生的问题,会严重的影响您的服务器性能,因为I/O是消耗CPU的)
0.0%hi(servicing IRQs)
0.3%si(servicing soft IRQs)
0.0%st(steal (time given to other DomU instances))

第4行:
Mem:511140ktotal:物理内存总量
283656kused:已使用的物理内存
227484kfree:未使用的物理内存
24136kbuffers :内核缓存占用的物理内存

第5行:
Swap:2064376ktotal :交换分区总容量
0kused:已使用的交换分区容量
2064376kfree:未使用的交换分区容量
148144kcached :缓存的总容量,如果存在未使用的物理内存,则cached占用的是物理内存,如果未使用的物理内存为0,则cached将会占用部分swap分区,那么cached的容量是它占用的物理内存部分加上占用的swap分区的部分。

第6行为第二部分:

此为top的内部命令输入部分,常用命令有:
s改变top命令的刷新频率(默认是3秒),Change delay from 3.0 to:输入相应的数字
l关闭或开启第一行 top 信息
t关闭或开启第二行 Tasks 和第三行 Cpus 信息
m关闭或开启第一部分第四行 Mem 和 第五行 Swap 信息
N以 PID 的大小的顺序排列表示进程列表
P以 CPU 占用率大小的顺序排列进程列表
M以内存占用率大小的顺序排列进程列表
R对排列进行反转
u显示指定用户的进程,默认是全部用户的进程
c显示进程的全路径,默认是只有进程名
n或者 # 设置在进程列表所显示进程的数量,但最多是显示满屏
f调整top命令显示列表项。如增加GROUP列或UID列等等。但在下次使用top命令,还是原来成默认的。
k结束进程
r调整进程的优先级(Linux和AIX是从-20到19,HP-UX为0到39),至于如何得到的,可以通过man nice来查看。
h显示帮助
q退出 top

其余部分为进程信息:

top进程信息列表中各列的含义:
PID进程id
PPID父进程id
RUSERReal user name
UID进程所有者的用户id
USER进程所有者的用户名
GROUP进程所有者的组名
TTY启动进程的终端名。不是从终端启动的进程则显示为 ?
PR优先级
NInice值。负值表示高优先级,正值表示低优先级(Linux和AIX是从-20到19,HP-UX为0到39)
P最后使用的CPU,仅在多CPU环境下有意义
%CPU上次更新到现在的CPU时间占用百分比
TIME进程使用的CPU时间总计,单位秒
TIME+进程使用的CPU时间总计,单位1/100秒
%MEM进程使用的物理内存百分比
VIRT进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
SWAP进程使用的虚拟内存中,被换出的大小,单位kb。
RES进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
CODE可执行代码占用的物理内存大小,单位kb
DATA可执行代码以外的部分(数据段+栈)占用的物理内存大小,单位kb
SHR共享内存大小,单位kb
nFLT页面错误次数
nDRT最后一次写入到现在,被修改过的页面数
S进程状态
D=不可中断的睡眠状态
R=运行
S=休眠
T=跟踪/停止
Z=僵尸进程
COMMAND命令名/命令行
WCHAN若该进程在睡眠,则显示睡眠中的系统函数名
Flags任务标志

默认情况下仅显示比较重要的PID、USER、PR、NI、VIRT、RES、SHR、S、%CPU、%MEM、TIME+、COMMAND列。可以通过我们上面所说的内部的f命令,来调整列表选项。

www.bkjia.comtruehttp://www.bkjia.com/Linuxjc/813418.htmlTechArticleLinux系统中的基本运行单位是进程,通过对系统系统中的进程的管理能够对系统的实时运行状态进行了解和调度。Linux中提供了用于查看、调...

相关文章

帮客评论

视觉看点