何谓进程?进程,就是正在执行的一个程序或命令,每一个进程都是一个运行实体,有自己的地址空间,并占用一定的系统资源。简而言之,进程就是运行中的程序。在Linux中,诸如ls等命令都是进程,只不过某些命令进程在运行完后立即关闭了。而像apache等常驻内存服务也会产生进程,例如,一个用户访问一个apache下的站点,必定会产生一个进程。Linux中有各种各样的进程,尤其是在服务器中,我们需要实时了解系统中所有进程的状态,因此本篇文章将针对进程的管理进行详细地讲解。

在具体讲解进程管理前,我们先讨论一下进程管理的作用。总的来说,进程管理具有如下三个作用:

  • 判断服务器健康状态:这是进程管理中最主要的作用,通过分析进程的状态(内存、CPU占有率等)判断服务器的负载和安全状态。
  • 查看系统中的所有进程:这是进程管理的基础,通过查看系统中的所有进程状态才能决定对进程作出什么样的管理。
  • 杀死进程:进程管理中的辅助手段,杀死进程只是迫不得已的做法,一般情况下,进程都有正常的退出方法,只有进程不能正常结束时,才使用杀死进程的方法。

  在了解了进程管理的作用后,我们来看进程查看命令的使用。进程查看命令主要有ps、pstree、top三个命令,下面我们逐一讲解。

  1. 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进程管理详解的更多相关文章

  1. linux进程地址空间详解(转载)

    linux进程地址空间详解(转载) 在前面的<对一个程序在内存中的分析 >中很好的描述了程序在内存中的布局,这里对这个结果做些总结和实验验证.下面以Linux为例(实验结果显示window ...

  2. Linux进程退出详解(do_exit)--Linux进程的管理与调度(十四)

    Linux进程的退出 linux下进程退出的方式 正常退出 从main函数返回return 调用exit 调用_exit 异常退出 调用abort 由信号终止 _exit, exit和_Exit的区别 ...

  3. linux之进程管理详解

    |-进程管理        进程常用命令        |- w查看当前系统信息        |- ps进程查看命令        |- kill终止进程        |- 一个存放内存中的特殊目 ...

  4. Linux进程数据结构详解

    1.Linux的进程简介: 支持多线程的操作系统中,进程是资源分配的最小单位,线程是调度的基本单位.Linux是现代的32位或64位的支持多线程的操作系统,不过Linux是一种以轻量级进程作为线程,多 ...

  5. linux进程控制函数详解

    进程控制 fork函数 创建一个子进程. pid_t fork(void); 失败返回-1:成功返回:① 父进程返回子进程的ID(非负) ②子进程返回 0 pid_t类型表示进程ID,但为了表示-1, ...

  6. systemd 进程管理详解

    systemd进程管理 systemd管理的优势 1.最新系统都采用systemd管理(RedHat7,CentOS7,Ubuntu15...) 2.CentOS7 支持开机并行启动服务,显著提高开机 ...

  7. Linux ACL管理详解

    转自: http://linuxguest.blog.51cto.com/195664/124107 1. 为什么要使用ACL先让我们来简单地复习一下Linux的file permission.在li ...

  8. Linux 进程管理 笔记

    https://www.ibm.com/developerworks/cn/linux/l-linux-process-management/index.htmlLinux 进程管理剖析 进程可以是短 ...

  9. Linux进程管理与调度-之-目录导航【转】

    转自:http://blog.csdn.net/gatieme/article/details/51456569 版权声明:本文为博主原创文章 && 转载请著名出处 @ http:// ...

随机推荐

  1. Angular - - angular.injector、angular.module

    angular.injector 创建一个injector对象, 调用injector对象的方法可用于获取服务以及依赖注入. 格式:angular.injector(modules); modules ...

  2. 关于老版本ubuntu源不能用的问题

    在解决方向键为大写ABCD时安装vim 我的是Ubuntu 10.10 老版本 输入 sudo apt-get install vim 时出现 Package 'vim' has no install ...

  3. 【续】强行在C# Winform中渲染Cocos2d-x 3.6

    [前言] 上一篇讲了怎么把Cocos2d-x 3.6渲染进MFC窗体,这里来讲一下怎么在C# Winform中做到同样的功能.如果你不熟悉MFC的使用但对C# Winform比较在行,请往下看. 这一 ...

  4. html标签默认样式整理

    引:http://www.jb51.net/web/94964.html 文为大家整理了html标签默认样式属性及浏览器默认样式等等,喜欢css布局的朋友们可以学下,希望对大家有所帮助 html, a ...

  5. CSS入门介绍

    一.背景 这里将陆续介绍前端CSS中相关知识,先介绍CSS2.1,后续会介绍CSS3的相关属性,通过该系列的文章,希望能给准备转战前端的人员一些帮助,同时也帮助自己梳理知识,文章中如有错误,欢迎指出. ...

  6. 天兔(Lepus)监控邮件推送安装配置

    好吧,我承认官网的邮件配置教程我又没看懂,这里记录下我的配置方法 [root@HE3]# vi /usr/local/lepus/test_send_mail.py #!/usr/bin/envpyt ...

  7. 安装使用GYP,并编译libpomelo2

    1.然后是下载GYP,它是由 Chromium 团队开发的跨平台自动化项目构建工具,安装后可以使用其构建出libpomelo的vs工程项目,再而进行编译,这步先下载,地址: http://code.g ...

  8. jQuery disabled 元素

    http://www.jb51.net/article/19342.htm 在jquery中可以通过jqueryObj.attr("disabled","disabled ...

  9. LinkedHashMap遍历

    第一种: Map map = new HashMap(); Iterator iter = map.entrySet().iterator(); while (iter.hasNext()) { Ma ...

  10. 简单加解密算法 - vb.net

    Public Class Form1    Dim charAarray() As Char    '加密    Private Sub Btn_En_Click(sender As System.O ...