Linux进程管理详解
何谓进程?进程,就是正在执行的一个程序或命令,每一个进程都是一个运行实体,有自己的地址空间,并占用一定的系统资源。简而言之,进程就是运行中的程序。在Linux中,诸如ls等命令都是进程,只不过某些命令进程在运行完后立即关闭了。而像apache等常驻内存服务也会产生进程,例如,一个用户访问一个apache下的站点,必定会产生一个进程。Linux中有各种各样的进程,尤其是在服务器中,我们需要实时了解系统中所有进程的状态,因此本篇文章将针对进程的管理进行详细地讲解。
在具体讲解进程管理前,我们先讨论一下进程管理的作用。总的来说,进程管理具有如下三个作用:
- 判断服务器健康状态:这是进程管理中最主要的作用,通过分析进程的状态(内存、CPU占有率等)判断服务器的负载和安全状态。
- 查看系统中的所有进程:这是进程管理的基础,通过查看系统中的所有进程状态才能决定对进程作出什么样的管理。
- 杀死进程:进程管理中的辅助手段,杀死进程只是迫不得已的做法,一般情况下,进程都有正常的退出方法,只有进程不能正常结束时,才使用杀死进程的方法。
在了解了进程管理的作用后,我们来看进程查看命令的使用。进程查看命令主要有ps、pstree、top三个命令,下面我们逐一讲解。
- ps命令
命令选项:
- -a :显示一个终端所有的进程
- -u:显示进程的归属用户和内存占用情况
- -x:显示没有控制终端的进程
- -l:长格式显示更详细的信息
- -e:显示所有进程
命令组合:总的来说,ps命令具有两种组合格式,一种是ps aux,一种是ps -le。
- ps aux:查看系统中的所有进程,使用BSD操作系统格式

注:ps aux和ps -aux命令有区别,在ubuntu中ps -aux不会报错,而在centos中,ps -aux会提示警告信息。使用man ps可以查看文档描述,但是在使用过程中不必纠结于二者的区别。

- ps -le:查看系统中的所有进程,使用Linux标准格式

在实际使用过程中,我们没有必要对ps命令输出的所有进程都认识,应该关注的是每一列输出信息代表的含义是什么。下面以ps aux为例,讲解对应列的含义:
- USER:产生该进程的用户。
- PID:进程的ID。
- %CPU:该进程占用的CPU资源百分比。
- %MEM:该进程占用物理内存百分比。
- VSZ:该进程占用虚拟内存的大小,单位KB。
- RSS:该进程占用的实际物理内存大小,单位KB。
- TTY:该进程是在哪个中断运行的,其中tty1-tty7代表本地控制终端,tty1-tty6为字符终端,tty7为图形终端。pts/0-255代表虚拟终端。
- STAT:进程状态。常见状态有:
- R:运行
- S(大写):睡眠
- T:停止状态
- s(小写):包含子进程
- +:后台进程
- START:该进程的启动时间。
- TIME:该进程占用CPU的运算时间。
- COMMAND:进程名
(注:PID等于1的进程 /sbin/init 是系统的启动进程,是系统中所有进程的父进程)
2.pstree命令产看进程树
命令选项:
- -p:显示进程的PID
- -u:显示进程的所属用户

直接使用pstree命令,输出的是系统的进程树,其中相同名称的进程使用数字*进程名的形式输出,使用pstree -p命令可以将不同PID的进程展开:

3.top命令查看进程状态
命令选项:
- -d 秒数:指定top命令每隔几秒更新,默认是3秒。
- -b:使用批处理模式输出,一般和-n合用。
- -n 次数:指定top命令执行的次数。
top命令交互模式下的命令:
- ?或h:显示交互模式的帮助文档。
- p:以CPU使用率排序,默认方式。
- M:以内存使用率排序。
- N:以PID排序
- q:退出top命令交互模式
一般的,在终端输入top命令即进入了top交互模式:

此时可以键入交互模式下的命令对输出进行不同的排序。在top命令下,我们重点关注最上面五行系统信息:
- 11:31:20 :系统当前时间,默认每3秒更新。
- up 113days,16:20 :系统已运行113天16个小时20分钟。
- 3 users:当前登录了3个用户。
- load average:0.00,0.00,0.00 :系统在之前1分钟,5分钟,15分钟的平均负载,一般认为对于每一个CPU核心,该数值小于1时系统负载较小,大于1时系统负载较大。
- Tasks:112total :系统中的进程总数。
- 2 running:正在运行的进程数。
- 110 sleeping:睡眠进程数。
- 0 stopped:正在停止的进程。
- 0 zombie:僵尸进程。
- Cpu(s):0.3%us :用户模式占用的cpu百分比。
- 0.3%sy:系统模式占用的cpu百分比。
- 0.0%sy:改变过优先级的用户进程占用百分比。
- 99.3%id:空闲cpu的百分比。
- 0.0%wa:等待输入/输出的进程占用cpu百分比。
- 0.0%hi:硬中断请求服务占用cpu百分比。
- 0.0%si:软中断请求服务占用cpu百分比。
- 0.0%st:虚拟时间百分比。
- 第四行为物理内存的信息,第五行为交换分区的信息,单位为kb,注意buffers是用作缓冲的内存大小,cached是用作缓存的内存大小。
4.kill命令终止进程
- kill -l(字母l):查看所有信号。
其中,重点关注kill -1(数字1)和kill -9。kill -1用于重启进程(而不是杀死),不影响现有进程的使用,一般在修改某种服务的配置文件之后使用该命令;kill -9用于强制终止进程,基本格式为 kill [数字]进程PID。
- killall命令:基本格式为killall [选项][信号]进程名。killall的选项有-i和-I,-i用于交互,询问是否杀死某个进程,-I用于忽略进程名的大小写。

- pkill命令:基本格式为pkil [选项][信号]进程名 。选项-t 终端号 用于按照终端号踢出用户。
首先使用w命令查看当前用户,可以见到共有四个远程用户终端,当前正在使用的终端为pts/4,因为其正在使用w命令。接着用pkill命令踢出pts/0,再次用w命令查看,可见此时pts/0用户已被踢出。
5.优先级修改nice命令:基本格式为nice -n 数值 进程名。在前面ps -le命令中,表示优先级的列有PRI(priority)和NI(nice),真正的优先级由PRI决定,数值越小优先级越高。用户只能修改NI的值,修改后的PRI=原PRI+NI。下图为修改apache服务进程的优先级示例。由于优先级对日常使用无很大影响,此处不加赘述,有兴趣的可以自行查阅相关资料。
Linux进程管理详解的更多相关文章
- linux进程地址空间详解(转载)
linux进程地址空间详解(转载) 在前面的<对一个程序在内存中的分析 >中很好的描述了程序在内存中的布局,这里对这个结果做些总结和实验验证.下面以Linux为例(实验结果显示window ...
- Linux进程退出详解(do_exit)--Linux进程的管理与调度(十四)
Linux进程的退出 linux下进程退出的方式 正常退出 从main函数返回return 调用exit 调用_exit 异常退出 调用abort 由信号终止 _exit, exit和_Exit的区别 ...
- linux之进程管理详解
|-进程管理 进程常用命令 |- w查看当前系统信息 |- ps进程查看命令 |- kill终止进程 |- 一个存放内存中的特殊目 ...
- Linux进程数据结构详解
1.Linux的进程简介: 支持多线程的操作系统中,进程是资源分配的最小单位,线程是调度的基本单位.Linux是现代的32位或64位的支持多线程的操作系统,不过Linux是一种以轻量级进程作为线程,多 ...
- linux进程控制函数详解
进程控制 fork函数 创建一个子进程. pid_t fork(void); 失败返回-1:成功返回:① 父进程返回子进程的ID(非负) ②子进程返回 0 pid_t类型表示进程ID,但为了表示-1, ...
- systemd 进程管理详解
systemd进程管理 systemd管理的优势 1.最新系统都采用systemd管理(RedHat7,CentOS7,Ubuntu15...) 2.CentOS7 支持开机并行启动服务,显著提高开机 ...
- Linux ACL管理详解
转自: http://linuxguest.blog.51cto.com/195664/124107 1. 为什么要使用ACL先让我们来简单地复习一下Linux的file permission.在li ...
- Linux 进程管理 笔记
https://www.ibm.com/developerworks/cn/linux/l-linux-process-management/index.htmlLinux 进程管理剖析 进程可以是短 ...
- Linux进程管理与调度-之-目录导航【转】
转自:http://blog.csdn.net/gatieme/article/details/51456569 版权声明:本文为博主原创文章 && 转载请著名出处 @ http:// ...
随机推荐
- Angular - - angular.injector、angular.module
angular.injector 创建一个injector对象, 调用injector对象的方法可用于获取服务以及依赖注入. 格式:angular.injector(modules); modules ...
- 关于老版本ubuntu源不能用的问题
在解决方向键为大写ABCD时安装vim 我的是Ubuntu 10.10 老版本 输入 sudo apt-get install vim 时出现 Package 'vim' has no install ...
- 【续】强行在C# Winform中渲染Cocos2d-x 3.6
[前言] 上一篇讲了怎么把Cocos2d-x 3.6渲染进MFC窗体,这里来讲一下怎么在C# Winform中做到同样的功能.如果你不熟悉MFC的使用但对C# Winform比较在行,请往下看. 这一 ...
- html标签默认样式整理
引:http://www.jb51.net/web/94964.html 文为大家整理了html标签默认样式属性及浏览器默认样式等等,喜欢css布局的朋友们可以学下,希望对大家有所帮助 html, a ...
- CSS入门介绍
一.背景 这里将陆续介绍前端CSS中相关知识,先介绍CSS2.1,后续会介绍CSS3的相关属性,通过该系列的文章,希望能给准备转战前端的人员一些帮助,同时也帮助自己梳理知识,文章中如有错误,欢迎指出. ...
- 天兔(Lepus)监控邮件推送安装配置
好吧,我承认官网的邮件配置教程我又没看懂,这里记录下我的配置方法 [root@HE3]# vi /usr/local/lepus/test_send_mail.py #!/usr/bin/envpyt ...
- 安装使用GYP,并编译libpomelo2
1.然后是下载GYP,它是由 Chromium 团队开发的跨平台自动化项目构建工具,安装后可以使用其构建出libpomelo的vs工程项目,再而进行编译,这步先下载,地址: http://code.g ...
- jQuery disabled 元素
http://www.jb51.net/article/19342.htm 在jquery中可以通过jqueryObj.attr("disabled","disabled ...
- LinkedHashMap遍历
第一种: Map map = new HashMap(); Iterator iter = map.entrySet().iterator(); while (iter.hasNext()) { Ma ...
- 简单加解密算法 - vb.net
Public Class Form1 Dim charAarray() As Char '加密 Private Sub Btn_En_Click(sender As System.O ...