Linux程序与进程管理

  一、Linux进程管理工具

    pstree、 ps、 pgrep、 pkill、 killall、 uptime、 top、 htop、 vmstat、 lsof

   1、pstree

用于查看进程数之间的关系,即那个进程是父进程,哪个是子进程,可以清楚的看出来是谁创建了谁

     语法

# pstree  [选项]

     选项

选项 作用
- A 各进程树之间的连接以ASCII码字符连接
- U 各进程树之间的连接以UTF-8字符连接,某些终端可能会显示错误
- p 同时列出每个进程的PID
- u 同时列出每个进程的所属账号名称

     实例

# yum install psmisc -y      //先安装命令  

     centos 6
在这里插入图片描述
     centos 7
在这里插入图片描述

   2、ps

     语法

# ps  [选项]  

     选项

选项 作用
- A 所有的进程均显示出来,与 - e有相同作用
- a 显示现行终端机下的所有进程,包括其他用户的进程
- u 以用户为主的进程状态
- x 通常与 - a这个参数一起使用,可列出较完整信息
输出格式规划
- l 较长、较详的将该PID的信息列出
- j 工作的格式(jobs format)
- f 做一个更为完整的输出

     实例

    列出当前执行机下的进程在这里插入图片描述

   3、pgrep

       经常查看进程信息,包括进程是否已经消亡,通过pgrep来火的正在被调度的进程的相关信息。pgrep通过匹配其程序名,找到匹配的进程

     语法

# pgrep  [选项]  pidname   

     选项

选项 作用
- l 同时显示进程名和PID
- o 匹配到多个进程时,显示进程号最小的
- n 匹配到多个进程时,显示进程号最大的
进程号越大,不一定意味着进程的启动时间就越晚

     实例

在这里插入图片描述
    注:通常情况下,pgrep和kill连用,在指定条件下kill问题进程

# pgrep [选项] pidname   //先查找进程号
# kill [选项] pid        //用kill 结束进程

   4、kill killall pkill

    (1)kill

      语法

# kill [选项] pid       //kill + 进程号

      选项

选项 作用
- l 列出所有信号参数
- a 当处理当前进程时,不限制命令名和进程号的对应关系
- p 指定kill命令只打印相关进程的进程号,而不发送任何信号
- s 指定发送信息
- u 指定用户

     实例

    列出信号详情
在这里插入图片描述    一般常用的信号

信号 作用
HUP (1) 终端断线
INT (2) 中断(同crtl +c)
QUIT (3) 退出(同crtl + \)
TERM (15) 终止
KILL (9) 强制终止
CONT (18) 继续(与stop相反,fg / bg命令)
STOP (19) 暂停(同crtl + z)

    (2)pkill、killall

     pkill是ps与kill结合的命令,按照进程名杀死指定进程,pkill和killall用法差不多,都是直接杀死进程。

      语法

# pkill/killall  [选项]  pid      //pkill/killall + 进程号     

   5、htop

      htop是top的升级版,大家可能对top比较熟悉,但相比top有很多自身优势

  • 两者相比,top比较繁琐
  • 默认支持图形界面的鼠标操作
  • 可以横向或纵向滚动浏览进程列表,以便看到所有进程和完整的命令行
  • 杀进程时不需要输入进程号等
//虚拟机上没有该命令,先安装。
# yum install epel* -y    //安装epel源     
# yum install htop -y     //安装htop      

     实例

在这里插入图片描述

    各项解释

在这里插入图片描述

  • F1:显示帮助信息
  • F2:配置界面中的显示信息
  • F3:搜索进程
  • F4:过滤器
  • F5:以树形方式显示
  • F6:排序方式
  • F7:减小nice值
  • F8:增大nice值
  • F9:杀死进程
  • F10:退出htop

   6、vmstat

       vmstat命令是最常见的linux/unix监控工具,可以展现给定时间间隔的服务器的状态值,包括服务器的CPU使用率,内存使用,虚拟内存的交换情况,IO读写情况。这个命令是我查看linux/unix最喜欢的命令,一个是linux/unix都支持,二是相比top,我可以看到整个机器的CPU,内存,IO的使用情况,而不是单单看到各个进程的CPU使用率和内存使用率(使用场景不一样)
       一般vmstat工具的使用是通过两个数字参数来完成的,第一份参数是采样的时间间隔数,单位是秒,第二个参数是采样的次数

     语法

# vmstat [选项]

     选项

选项 作用
- V 显示vmstat版本信息
- n 只在开始时显示一次各字段名称
- a 显示活跃和非活跃内存
- d 显示各个磁盘相关统计信息
- D 显示磁盘总体信息
- p 显示指定磁盘分区统计信息
- s 显示内存相关统计信息及多种系统活动数量
- m 显示slabinfo
- t 在输出信息的时候也将时间一并输出
- S 使用指定单位显示。参数有k、K、m、M 分别代表1000、1024、1000000、1048576字节。默认单位是 K (1024bytes)
delay 刷新时间间隔。如果不指定,只显示一条结果
count 刷新次数。如果不指定刷新次数,但制定了刷新时间间隔,这时刷新次数为无穷

     实例

在这里插入图片描述    以上字段含义

类别 选项 含义 说明
Process r 等待执行的任务数 展示了正在执行和等待CPU资源的任务个数。当这个值超过了CPU个数,就会出现CPU瓶颈
B 等待IO的进程数量
Memory swpd 正在使用虚拟的内存大小,单位k 值大于0表示物理内存已经不足,需要考虑升级内存
free 空闲内存大小 指物理内存
buff 已用的buff大小,对块设备的读写进行缓冲
cache 已用的cache大小,文件系统的cache 指的是page cached内存大小
nact 非活跃内存大小,即被表明可回收的内存,区别于free和active
active 活跃的内存大小
Swap si 每秒从交换分区写入内存的大小(单位:kb/s) 表示有磁盘调入内存,也就是内存进入内存交换分区的内存大小;通俗的讲就是每秒从磁盘读入内存的大小,如果这个值大于0,表示物理内存不够用或者内存泄漏了,要查看内存进程解决掉
so 每秒从内存写到交换分区的大小 表示由内存进入磁盘,也就是由内存交换区进入内存的内存大小
IO bi 每秒读取的块数(读磁盘) 现在的linux版本块的大小为1024bytes
bo 每秒写入的块数(写磁盘) 如果bi+bo的值过大,且wa值较大,则表示系统磁盘IO瓶颈
System in 每秒中断数,包括时钟中断 值越大,会看到由内核消耗的CPU时间会越多
cs 每秒上下文切换数 值越大,会看到由内核消耗的CPU时间会越多
CPU Us 用户进程执行消耗CPU时间(user time) us的值比较高时,说明用户进程消耗的CPU时间多,但是如果长期超过50%的使用,那么我们就该考虑优化程序算法或其他措施
Sy 系统进程消耗CPU时间(system time) sys的值过高时,说明系统内核消耗的CPU资源多,这不是良性的表现,我们应该检查原因。一般来说us+sy应该小于80%,如果大于80%,说明内存可能存在CPU瓶颈
id 空闲时间(包括IO等待时间)
wa 等待IO时间 wa过高时,说明IO等待比较严重,这可能是由于磁盘大量随机访问造成的,也有可能是磁盘的带宽出现瓶颈

    注意:

     如果评估CPU,需要重点关注procs项的 r 列值和CPU项的us,sy,wa列的值

猜你喜欢

转载自blog.csdn.net/weixin_45440548/article/details/105661515
今日推荐