CentOS进程管理

CentOS进程管理

笔记

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


一、进程概述

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

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

二、查看进程

1、使用ps命令

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

举例说明:

~ ]#ps aux | more USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root  1  0.0  0.3 193648  6648 ?        Ss   5月06   1:09 /usr/lib/systemd/systemd --system --deserialize 13
root  2  0.0  0.0  0   0 ?        S     May06   0:00 [kthreadd]
root  3  0.0  0.0  0   0 ?        S     May06   0:01 [ksoftirqd/0]
root  5  0.0  0.0  0   0 ?        S<    May月06   0:00 [kworker/0:0H]
root  7  0.0  0.0  0   0 ?        S     May06   0:04 [migration/0]
root  8  0.0  0.0  0   0 ?        S     May06   0:00 [rcu_bh]
root  9  0.0  0.0  0   0 ?        S     May06   2:33 [rcu_sched]
root  10  0.0  0.0  0   0 ?        S     May06   0:05 [watchdog/0]
root  11  0.0  0.0  0   0 ?        S     May06   0:05 [watchdog/1]
root  12  0.0  0.0  0   0 ?        S     May06   0:05 [migration/1]
root  13  0.0  0.0  0   0 ?        S     May06   0:08 [ksoftirqd/1]

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 僵尸进程; 
< 优先级高的进程 
N 优先级较低的进程 
L 有些页被锁进内存; 
s 进程的领导者(在它之下有子进程); 
l 多线程 (using CLONE_THREAD, like NPTL pthreads do) 
+ 位于后台的进程组; 
WCHAN :正在等待的进程资源; 
START : 启动进程的时间; 
TIME : 进程消耗CPU的时间; 
COMMAND: 启动进程的命令的名称和参数; 
ps命令的其他用法:

(1)

~]# 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)

~]# 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某一刻的输出信息:

top - 20:49:29 up 9 days, 17:02,  3 users,  load average: 0.00, 0.01, 0.05
Tasks: 198 total,  2 running, 196 sleeping,  0 stopped,  0 zombie
%Cpu(s):  0.0 us,  0.1 sy,  0.0 ni, 99.9 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  1867292 total,  150628 free,  734708 used,  981956 buff/cache
KiB Swap:  2098172 total,  2098172 free,  0 used.  842256 avail Mem 

PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND  67748 root  20   0  157708   2324   1564 R   0.3  0.1   0:00.08 top  1 root  20   0  193648   6648   3872 S   0.0  0.4   1:09.78 systemd  2 root  20   0   0   0   0 S   0.0  0.0   0:00.78 kthreadd  3 root  20   0   0   0   0 S   0.0  0.0   0:01.45 ksoftirqd/0  5 root  0 -20  0   0   0 S   0.0  0.0   0:00.00 kworker/0:0H  7 root      rt  0   0   0   0 S   0.0  0.0   0:04.57 migration/0  8 root  20   0   0   0   0 S   0.0  0.0   0:00.00 rcu_bh  9 root  20   0   0   0   0 S   0.0  0.0   2:33.51 rcu_sched  10 root      rt  0   0   0   0 S   0.0  0.0   0:05.65 watchdog/0  11 root      rt  0   0   0   0 S   0.0  0.0   0:05.26 watchdog/1  12 root      rt  0   0   0   0 S   0.0  0.0   0:05.15 migration/1  13 root  20   0   0   0   0 S   0.0  0.0   0:08.54 ksoftirqd/1  15 root  0 -20  0   0   0 S   0.0  0.0   0:00.00 kworker/1:0H  16 root      rt  0   0   0   0 S   0.0  0.0   0:06.32 watchdog/2  17 root      rt  0   0   0   0 S   0.0  0.0   0:03.65 migration/2  18 root  20   0   0   0   0 S   0.0  0.0   0:01.72 ksoftirqd/2  21 root      rt  0   0   0   0 S   0.0  0.0   0:05.62 watchdog/3  22 root      rt  0   0   0   0 S   0.0  0.0   0:03.74 migration/3  23 root  20   0   0   0   0 S   0.0  0.0   0:00.91 ksoftirqd/3  27 root  0 -20  0   0   0 S   0.0  0.0   0:00.00 khelper  28 root  20   0   0   0   0 S   0.0  0.0   0:00.01 kdevtmpfs  29 root  0 -20  0   0   0 S   0.0  0.0   0:00.00 netns  30 root  20   0   0   0   0 S   0.0  0.0   0:01.24 khungtaskd  31 root  0 -20  0   0   0 S   0.0  0.0   0:00.00 writeback  32 root  0 -20  0   0   0 S   0.0  0.0   0:00.00 kintegrityd  33 root  0 -20  0   0   0 S   0.0  0.0   0:00.00 bioset  34 root  0 -20  0   0   0 S   0.0  0.0   0:00.00 kblockd  35 root  0 -20  0   0   0 S   0.0  0.0   0:00.00 md  41 root  20   0   0   0   0 S   0.0  0.0   0:01.18 kswapd0  42 root  25   5   0   0   0 S   0.0  0.0   0:00.00 ksmd  43 root  39  19   0   0   0 S   0.0  0.0   0:15.76 khugepaged  44 root  20   0   0   0   0 S   0.0  0.0   0:00.31 fsnotify_mark  45 root  0 -20  0   0   0 S   0.0  0.0   0:00.00 crypto

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

1-5行为第一部分:

第1行:

top – 20:49:29 : 当前时间,默认每三秒更新一次。 
up 9 days :系统运行了多长时间,格式为时:分 
3 users :当前登录用户数 
load average: 0.00, 0.01, 0.15 :系统负载,即任务队列的平均长度。三个数值分别为> 1分钟、5分钟、15分钟前到现在的平均值。

第2行:

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

第3行:

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

第4行:

Mem: 1867292 tota :物理内存总量 
734708 used :已使用的物理内存 
150628 free :未使用的物理内存 
981956 buff/cache:内核缓存占用的物理内存

第5行:

Swap: 2098172 total:交换分区总容量 
0k used:已使用的交换分区容量 
2098172 free:未使用的交换分区容量 
842256 avail Mem :缓存的总容量

如果存在未使用的物理内存,则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) 
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命令,来调整列表选项。

原创文章,作者:zero,如若转载,请注明出处:http://www.178linux.com/75831

(0)
上一篇 2017-05-15 21:01
下一篇 2017-05-15 21:30

相关推荐

  • 马哥教育网络班22期第3周课程作业

    1、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。 [root@MyCloudServer ~]# who | cut -d " " -f1 |sort -u root 2、取出最后登录到当前系统的用…

    Linux干货 2016-09-19
  • 九.Linux博客-2016年8月10日脚本、sed、vim

    格式说明: 操作 概念 命令 说明及举例 九 脚本sed、vim sed 文本编辑工具 行编辑器,每次取出一行在内存里处理,处理完成后屏幕打印。完成后再取出一行放到内存里处理,覆盖原来内存中的行,循环。。 sed -n '3d' f1 把文件f1中的第三行删掉并不在屏幕上显示 sed -n…

    Linux干货 2016-08-24
  • lvs笔记之nat&dr模型简单实现

    lvs笔记之nat&dr模型简单实现 lvs笔记之nat&dr模型简单实现 lvs 集群 实现 负载均衡 nat lvs笔记之nat&dr模型简单实现 ipvsadm使用说明 lvs-nat的简单实现 踩过的坑1 lvs-dr实现 总结 ipvsadm使用说明     -A: 添加一个…

    2017-01-03
  • 马哥教育网络班20期第3周课程练习

    答: 1、 [root@totooco ~]# who | cut -c1-9 | sort -u 2、 [totooco@totooco ~]$ who | cut -c1-9 | head -1 3、 [root@totooco ~]# cat /etc/passwd | cut -d: -f7 | grep -v /sbin/nologin | sor…

    Linux干货 2016-06-23
  • haproxy

    12.1 高性能负载均衡软件HAProxy介绍 随着互联网业务的迅猛发展,大型电商平台和门户网站对系统的可用性和可靠性要求越来越高,高可用集群、负载均衡集群成为一种热门的系统架构解决方案。在众多的负载均衡集群解决方案中,有基于硬件的负载均衡设备,例如F5、Big-IP等,也有基于软件的负载均衡产品,例如HAProxy、LVS、Nginx等。在软件的负载均衡产…

    2018-01-03
  • 程序包管理之编译安装apache

    编译就是讲开发者提供的源代码,通过编译器,汇编器,连接器转换成可以直接在操作系统上运行的二进制指令的过程。C/C++源码的编译通常包括以下几个过程:     预处理(Preprocessing)     编译(Compilation)    &nbs…

    Linux干货 2016-08-24