监控和管理Linux进程

1、进程的6种状态

R:running,正在运行或正在运行队列中等待

S:sleeping,可中断的睡眠状态,一般指进程在等待某个事件的发生,而被挂起。如服务进程在没有连接时,就处于sleeping状态,等待有人来连接时候再被唤醒,节省资源。

D:不可中断进程

T:暂停或停止状态

Z:僵尸状态,不可被kill,即不响应任务信号,无法用SIGKILL杀死

X:退出状态,进程即将被销毁

2、ps命令

参数:

-A :所有的进程均显示出来,与 -e 具有同样的效用;

-a : 显示现行终端机下的所有进程,包括其他用户的进程;

-u :以用户为主的进程状态 ;

x :通常与 a 这个参数一起使用,可列出较完整信息。

输出格式规划:

l :较长、较详细的将该 PID 的的信息列出;

j :工作的格式 (jobs format)

-f :做一个更为完整的输出。

ps       --不带任何参数,仅查看当前shell中的进程

图1

ps -l    --可以查看当前终端进程的父进程,也就是echo $$查看到的bash进程

图2

ps -aux | more

-a:查看所有终端下的进程,还有和终端无关的进程显示不出来

-au:多了更多内容,但是还是针对所有终端的

ps -elf | more

-e:表示查看所有的进程

-l:表示一更详细的信息显示

-f:显示更完整

ps -axjf                --以树形结构列出进程间的关系

图3

ps -elf | grep sshd

图4
图5

cwd符号链接的是进程运行目录;

exe符号连接就是执行程序的绝对路径;

cmdline就是程序运行时输入的命令行命令;

environ记录了进程运行时的环境变量;

fd目录下是进程打开或使用的文件的符号连接。

yum install -y psmisc

pstree         --查看进程之间的父子关系

图6

pstree -Aup

-A:显示树形结构

-u:显示用户ID

-p:先后PID

图7

3、pgrep命令

通过程序名称来查询进程的工具,一般用来判断程序是否在运行。

-l:列出程序名和进程ID

-o:进程的起始ID;

-n:进程的终止ID;

图8

4、uptime命令

uptime命令能够打印系统总共运行时间和平均负载。显示的信息以此为:当前系统时间、系统运行总时长、目前登陆系统的用户数量、系统在过去1分钟、5分钟、15分钟的平均负载。

uptime -V                  --显示命令版本信息

uptime

图9

5、w命令

显示已经登录系统的用户列表

-h:不打印表头

-u:忽略执行程序的名称,以及该程序耗费CPU时间的信息

-s:简易输出

-f:显示用户从哪登录

-V:显示版本信息

图10

6、top命令

top -d 2 -n 3                    --每隔2秒刷新一次,总共3次

top -d 2 -n 3 -p PID         --查找固定进程的资源使用情况

图11

7、vmstat命令

vmstat是Virtual Meomory Statistics(虚拟内存统计)的缩写,可对操作系统的虚拟内存、进程、CPU活动进行监控。是对系统的整体情况进行统计,不足之处是无法对某个进程进行深入分析。

常用命令展示

vmstat 3 3                                  --在3秒时间内进行3次采样

图12

字段说明:

procs(进程):

  r:运行队列中进程数量

  b:等待IO的进程数量

Memory(内存):

  swpd: 使用虚拟内存大小

  free: 可用内存大小

  buff: 用作缓冲的内存大小

  cache: 用作缓存的内存大小

Swap:

  si: 每秒从交换区写到内存的大小

  so: 每秒写入交换区的内存大小

IO:(现在的Linux版本块的大小为1024bytes)

  bi: 每秒读取的块数

  bo: 每秒写入的块数

系统:

in: 每秒中断数,包括时钟中断。 【interrupt】

cs: 每秒上下文切换数。              【count/second】

CPU(以百分比表示):

  us: 用户进程执行时间(user time)

  sy: 系统进程执行时间(system time)

  id: 空闲时间(包括IO等待时间),中央处理器的空闲时间 。以百分比表示。

  wa: 等待IO时间

备注:

如果r经常大于4,id经常少于40,表示cpu的负荷很重。

如果bi,bo长期不等于0,表示内存不足。

如果disk经常不等于0,且在b中的队列大于3,表示io性能不好。

Linux在具有高稳定性、可靠性的同时,具有很好的可伸缩性和扩展性,能够针对不同的应用和硬件环境调整,优化出满足当前应用需要的最佳性能。因此企业在维护Linux系统、进行系统调优时,了解系统性能分析工具是至关重要的。

显示活跃和非活跃内存

vmstat -a 2 5   【-a 显示活跃和非活跃内存,所显示的内容除增加inact和active】

图13

显示从系统启动至今的fork数量

vmstat -f 【 linux下创建进程的系统调用是fork

图14

说明: 信息是从/proc/stat中的processes字段里取得的

查看内存使用的详细信息

vmstat -s   【显示内存相关统计信息及多种系统活动数量

图15

说明:这些信息的分别来自于/proc/meminfo,/proc/stat和/proc/vmstat

查看磁盘的读/写

vmstat -d 【查看磁盘的读写】

图16

说明:这些信息主要来自于/proc/diskstats.

查看/dev/sda1磁盘的读/写

vmstat -p /dev/sda1 【显示指定磁盘分区统计信息

图17

说明:这些信息主要来自于/proc/diskstats.

reads:来自于这个分区的读的次数。

read sectors:来自于这个分区的读扇区的次数。

writes:来自于这个分区的写的次数。

requested writes:来自于这个分区的写请求次数。

查看系统的slab信息

vmstat -m

说明:这些信息主要来自于/proc/slabinfo

slab:由于内核会有许多小对象,这些对象构造销毁十分频繁,比如i-node,dentry,这些对象如果每次构建的时候就向内存要一个页(4kb),这样就会非常浪费,为了解决这个问题,就引入了一种新的机制来处理在同一个页框中如何分配小存储区,而slab可以对小对象进行分配,这样就不用为每一个对象分配页框,从而节省了空间,内核对一些小对象创建析构很频繁,slab对这些小对象进行缓冲,可以重复利用,减少内存分配次数。

8、查看进程路径

lsof -p 5684 -a -i 4

图18

9、进程的中断

图19

kill -信号 PID

通过ps命令查看job的进程号(PID),然后kill pid

图20

kill -信号 进程名称           --将名称匹配的进程全部杀掉


图21
图22

pkill 进程名称           --和killall一样,也可以向多个进程发送信号

踢掉test用户

图23

按用户匹配,并杀掉指定用户的进程

图24

信号0:检测进程是否存在,并不杀死进程。如killall -0 ping,如果什么都没输出,则表示有这个进程,否则提示没有这个进程。

图25

可用echo $?检测killall -0 ping命令是否执行成功,不支持进程名称作为通配符

图26

信号1:表示挂起,让这个进程重新加载配置文件,一般用于服务,用简称HUP代替”1“也可以。

比如修改httpd的配置文件,将端口改为8080

killall -1 httpd

lsof -i:80

lsof -i:8080

信号2:表示键盘中断,向前台的进程发送一个终止运行的信号,如:ctrl+c

信号3:表示键盘退出,和信号2的作用类似,但在杀死进程同时又将进程启动了。如ctrl+\

例:ping 127.0.0.1,此时给进程发送一个3信号,就掉了一个包;

信号9:表示中断,无法拦截,不能正常结束的进程,可用此信号强制杀掉;

killall -9 httpd,把httpd服务全部杀掉,此信号杀掉的进程难以再次启动,相当于直接关闭电源;

信号15:

你可能感兴趣的:(监控和管理Linux进程)