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

一、进程概述

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

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

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

二、查看进程

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

举例说明:

[root@Vtest ~]# ps aux|more

USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.5  0.2   2864  1396 ?        Ss   13:30   0:01 /sbin/init
root         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/httpd
apache    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 httpd
1887  0.0  0.8 httpd
1888  0.0  0.8 httpd

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

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

2、top命令

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

[root@Vtest ~]# top

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

 
  1. top - 14:01:40 up 31 min,  1 user,  load average: 0.04, 0.01, 0.00
  2. Tasks: 122 total,   1 running, 121 sleeping,   0 stopped,   0 zombie
  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:    511140k total,   283656k used,   227484k free,    24136k buffers
  5. Swap:  2064376k total,        0k used,  2064376k free,   148144k cached
  6. PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
  7. 2215 root      20   0  2672 1116  880 R  0.7  0.2   0:00.08 top
  8. 2145 root      20   0 11552 3316 2580 S  0.3  0.6   0:00.25 sshd
  9. 1 root      20   0  2864 1396 1184 S  0.0  0.3   0:01.67 init
  10. 2 root      20   0     0    0    0 S  0.0  0.0   0:00.00 kthreadd
  11. 3 root      RT   0     0    0    0 S  0.0  0.0   0:00.00 migration/0
  12. 4 root      20   0     0    0    0 S  0.0  0.0   0:00.00 ksoftirqd/0
  13. 5 root      RT   0     0    0    0 S  0.0  0.0   0:00.00 migration/0
  14. 6 root      RT   0     0    0    0 S  0.0  0.0   0:00.00 watchdog/0
  15. 7 root      20   0     0    0    0 S  0.0  0.0   0:00.00 events/0
  16. 8 root      20   0     0    0    0 S  0.0  0.0   0:00.00 cpuset
  17. 9 root      20   0     0    0    0 S  0.0  0.0   0:00.00 khelper
  18. 10 root      20   0     0    0    0 S  0.0  0.0   0:00.00 netns
  19. 11 root      20   0     0    0    0 S  0.0  0.0   0:00.00 async/mgr
  20. 12 root      20   0     0    0    0 S  0.0  0.0   0:00.00 pm
  21. 13 root      20   0     0    0    0 S  0.0  0.0   0:00.00 sync_supers
  22. 14 root      20   0     0    0    0 S  0.0  0.0   0:00.00 bdi-default
  23. 15 root      20   0     0    0    0 S  0.0  0.0   0:00.00 kintegrityd/0
  24. 16 root      20   0     0    0    0 S  0.0  0.0   0:00.01 kblockd/0
  25. 17 root      20   0     0    0    0 S  0.0  0.0   0:00.00 kacpid
  26. 18 root      20   0     0    0    0 S  0.0  0.0   0:00.00 kacpi_notify
  27. 19 root      20   0     0    0    0 S  0.0  0.0   0:00.00 kacpi_hotplug
  28. 20 root      20   0     0    0    0 S  0.0  0.0   0:00.00 ata/0
  29. 21 root      20   0     0    0    0 S  0.0  0.0   0:00.00 ata_aux
  30. 22 root      20   0     0    0    0 S  0.0  0.0   0:00.00 ksuspend_usbd
  31. 23 root      20   0     0    0    0 S  0.0  0.0   0:00.00 khubd

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

1-5行为第一部分:

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

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

第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:    511140k total:物理内存总量
283656k used  :已使用的物理内存
227484k free    :未使用的物理内存
24136k buffers :内核缓存占用的物理内存

第5行:
Swap:  2064376k total :交换分区总容量
0k used:已使用的交换分区容量
2064376k free:未使用的交换分区容量
148144k cached :缓存的总容量,如果存在未使用的物理内存,则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
RUSER     Real user name
UID     进程所有者的用户id
USER     进程所有者的用户名
GROUP     进程所有者的组名
TTY     启动进程的终端名。不是从终端启动的进程则显示为 ?
PR         优先级
NI         nice值。负值表示高优先级,正值表示低优先级(Linux和AIX是从-20到19,HP-UX为0到39)
        最后使用的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     最后一次写入到现在,被修改过的页面数
        进程状态
D=不可中断的睡眠状态
R=运行
S=休眠
T=跟踪/停止
Z=僵尸进程
COMMAND    命令名/命令行
WCHAN     若该进程在睡眠,则显示睡眠中的系统函数名
Flags     任务标志

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

CentOS进程管理的更多相关文章

  1. centos中进程管理工具

    进程管理:  二进制的格式为ELF,是CPU指令集中的指令  程序=指令+数据,  进程是程序的副本,可以有多个  内核是一个资源调度监视器  Linux是抢占式多任务  内存被事先划分成多个相同大小 ...

  2. linux(centos)下安装supervisor进程管理工具

    在接触supervisor进程管理工具之前,使用springboot打包部署到linux服务器的流程是这样子的,如下图所示: 上图展示的就是最一般的流程,如果项目是小项目或者demo可以这样子去部署, ...

  3. Linux下取代top的进程管理工具 htop

    一.htop 简介 This is htop, an interactive process viewer for Linux. It is a text-mode application (for ...

  4. Linux进程管理详解

    何谓进程?进程,就是正在执行的一个程序或命令,每一个进程都是一个运行实体,有自己的地址空间,并占用一定的系统资源.简而言之,进程就是运行中的程序.在Linux中,诸如ls等命令都是进程,只不过某些命令 ...

  5. Python 进程管理工具 Supervisor 使用教程

    Supervisor 是基于 Python 的进程管理工具,只能运行在 Unix-Like 的系统上,也就是无法运行在 Windows 上.Supervisor 官方版目前只能运行在 Python 2 ...

  6. Supervisor进程管理&开机自启

    这几天在用supervisor管理爬虫和Flask, 每次都记不住命令,花点时间记录下. supervisor是一个进程管理工具,用来启动.停止.重启和监测进程.我用这个东西主要用来监测爬虫和Flas ...

  7. Supervisor (进程管理利器) 使用说明 - 运维笔记

    一.Supervisor简单介绍supervisor是一个 Client/Server模式的系统,允许用户在类unix操作系统上监视和控制多个进程,或者可以说是多个程序.supervisor与laun ...

  8. Linux进程管理工具 Supervisord 的安装 及 入门教程

    Supervisor是一个进程管理工具,官方的说法: 用途就是有一个进程需要每时每刻不断的跑,但是这个进程又有可能由于各种原因有可能中断.当进程中断的时候我希望能自动重新启动它,此时,我就需要使用到了 ...

  9. Supervisor安装与配置(Linux/Unix进程管理工具)

    原文链接:http://blog.csdn.net/xyang81/article/details/51555473 Supervisor(http://supervisord.org/)是用Pyth ...

随机推荐

  1. 20个Linux服务器安全强化建议(一)

    Linux服务器安全对于保护用户数据.知识产权非常重要,同时还能减少你面对黑客的时间.在工作中,通常由系统管理员对Linux的安全负责,在这篇文章中,介绍了20条对Linux系统进行强化的建议.本文所 ...

  2. Ubuntu Linux 12.04 LTS amd64系统本地root提权

    URL:http://www.ichunqiu.com/section/173 由于fusermount二进制调用setuid的(geteuid())重置RUID时,它调用/bin/mount才能使用 ...

  3. 移植linux-2.6.32.2到qq2440

    编译该版本内核使用的编译器版本:arm-linux-gcc 3.4.1 1.获取linux-2.6.32.2 2.解压内核 3.切换到刚解压的内核目录下: cd linux-2.6.32.2 4.修改 ...

  4. mmap()与munmap()的小例子

    mmap() 和 munmap() - Unix的系统函数,更贴近底层 void* mmap(void* addr,size_t size,int prot,int flags, int fd, of ...

  5. Criterion & DetachedCriteria

    今天笔记主要是记录笔记,以及代码: criteria: 创建查询接口:createCriteria(class) 查询条件接口:add(各种条件); Restrictions 提供了设置参数的各种接口 ...

  6. 基础笔记5(file)

    file 可以是目录和文件(只是是java程序与系统的文件进行一种关联) File file1 = new File("f:/mytest", "test5.txt&qu ...

  7. 线程池ExecutorService和完成服务CompletionService的使用获取线程的返回结果

    package com.suning.ecif.admin.app.impl.temp; import java.util.ArrayList;import java.util.Collection; ...

  8. canvas滤镜之简单的取反

    自己学习了一下canvas滤镜 编写一个简单的小界面,嘿嘿! 注释都在里面啦啦啦,感兴趣的来瞅瞅哦

  9. 无法嵌入互操作类型“Microsoft.Office.Interop.Excel.ApplicationClass”。请改用适用的接口

    解决 把Microsoft.Office.Interop.Excel.DLL的嵌入互操作类型改为ture就可以了

  10. 解决SQLite database is locked

    前些时候,同事在站点服务端使用SQlite存储一些临时数据,但是在多人并发的时候Sqlite会抛出异常:The database file is locked , database is locked ...