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中的进程
ps -l --可以查看当前终端进程的父进程,也就是echo $$查看到的bash进程
ps -aux | more
-a:查看所有终端下的进程,还有和终端无关的进程显示不出来
-au:多了更多内容,但是还是针对所有终端的
ps -elf | more
-e:表示查看所有的进程
-l:表示一更详细的信息显示
-f:显示更完整
ps -axjf --以树形结构列出进程间的关系
ps -elf | grep sshd
cwd符号链接的是进程运行目录;
exe符号连接就是执行程序的绝对路径;
cmdline就是程序运行时输入的命令行命令;
environ记录了进程运行时的环境变量;
fd目录下是进程打开或使用的文件的符号连接。
yum install -y psmisc
pstree --查看进程之间的父子关系
pstree -Aup
-A:显示树形结构
-u:显示用户ID
-p:先后PID
3、pgrep命令
通过程序名称来查询进程的工具,一般用来判断程序是否在运行。
-l:列出程序名和进程ID
-o:进程的起始ID;
-n:进程的终止ID;
4、uptime命令
uptime命令能够打印系统总共运行时间和平均负载。显示的信息以此为:当前系统时间、系统运行总时长、目前登陆系统的用户数量、系统在过去1分钟、5分钟、15分钟的平均负载。
uptime -V --显示命令版本信息
uptime
5、w命令
显示已经登录系统的用户列表
-h:不打印表头
-u:忽略执行程序的名称,以及该程序耗费CPU时间的信息
-s:简易输出
-f:显示用户从哪登录
-V:显示版本信息
6、top命令
top -d 2 -n 3 --每隔2秒刷新一次,总共3次
top -d 2 -n 3 -p PID --查找固定进程的资源使用情况
7、vmstat命令
vmstat是Virtual Meomory Statistics(虚拟内存统计)的缩写,可对操作系统的虚拟内存、进程、CPU活动进行监控。是对系统的整体情况进行统计,不足之处是无法对某个进程进行深入分析。
常用命令展示
vmstat 3 3 --在3秒时间内进行3次采样
字段说明:
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】
显示从系统启动至今的fork数量
vmstat -f 【 linux下创建进程的系统调用是fork】
说明: 信息是从/proc/stat中的processes字段里取得的
查看内存使用的详细信息
vmstat -s 【显示内存相关统计信息及多种系统活动数量】
说明:这些信息的分别来自于/proc/meminfo,/proc/stat和/proc/vmstat
查看磁盘的读/写
vmstat -d 【查看磁盘的读写】
说明:这些信息主要来自于/proc/diskstats.
查看/dev/sda1磁盘的读/写
vmstat -p /dev/sda1 【显示指定磁盘分区统计信息】
说明:这些信息主要来自于/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
9、进程的中断
kill -信号 PID
通过ps命令查看job的进程号(PID),然后kill pid
kill -信号 进程名称 --将名称匹配的进程全部杀掉
pkill 进程名称 --和killall一样,也可以向多个进程发送信号
踢掉test用户
按用户匹配,并杀掉指定用户的进程
信号0:检测进程是否存在,并不杀死进程。如killall -0 ping,如果什么都没输出,则表示有这个进程,否则提示没有这个进程。
可用echo $?检测killall -0 ping命令是否执行成功,不支持进程名称作为通配符
信号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: