ps命令
1、ps简介
ps命令是一个查看进程的命令,使用该功能可以确定有那些正在运行的状态、进程是否结束、进程有没有僵死、哪些进程占用了过多的资源等等。
2、ps及命令参数
ps选项有三种风格:
(1) UNIX 风格:选项前必须带有-连字符;如:-e
(2) BSD 风格 :选项前不使用-连字符 如:aux
(3) GNU 风格 : 选项必须使用长格式显示
ps [选项]
a:所有与终端相关的进程;
x:所有与终端无关的进程;
u:以用户为中心组织进程状态信息显示;
-e:显示所有进程
-f:显示完整格式的进程信息
-F:显示完整格式的进程信息;
-H:以层级结构显示进程的相关信息
-o FILED1,FILED2,...:自定义要显示的字段列表,以组合出现时记得写在后面
常用组合:ps aux:显示所有进程状态信息显示
ps -ef:显示所有进程以完整格式显示
ps -eFH:以层级显示所有完整信息
ps -eo,axo:
示例:ps aux
USER:用户
PID:用户pid
%CPU:cpu的使用率
%MEM:占用的内存使用率
VSZ:占用的虚拟内存大小
RSS:占用的内存大小
TTY:是否与终端相关
STAT:进程状态
进程状态:
R:运行中
S:可中断睡眠
D:不可中断睡眠
T:停止中
Z:僵尸进程
+:前台进程
l:多线程进程
N:低优先级进程
<:高优先级进程
s:session leader
START:启动进程的时间
TIME:进程消耗cpu的时间
COMMAND:命令的名称和参数
示例:ps -ef
C:cpu的占用百分比
UID:用户
PPID:父进程ID
STIME:启动时间
TTY:显示是否与终端相关
TIME:累计运行时间
CMD:启动此进程的命令
示例:ps -eFH
PSR:在那颗cpu上运行
示例:ps -eo FILED1,FILED2,...
常用的field:pid, ni, priority, psr, pcpu, stat, comm, tty, ppid, rtprio
ni:nice值;
priority:priority, 优先级;
rtprio:real time priority,实时优先级;
top命令:
top命令可以实时动态地查看系统的整体运行情况,通过top命令所提供的交互式界面,用热键可以修改。
语法格式:
top [选项]
交互式命令:
P:以占据cpu百分比排序
M:以占据内存百分比排序
T:累计占用cpu时间排序
l:uptime信息
t:tasks及cpu信息
m:内存信息
h:显示帮助画面
k:终止一个进程
r:重新安排一个进程的优先级别
q:退出程序
i:忽略闲置和僵死进程,这是一个开关式命令
s:改变刷新时间间隔
t:显示进程和cpu状态信息
c:显示命令名称和完整命令行
M:根据常驻内存大小进行排序
T:根据时间/累计时间进行排序
W:将当前设置写入~/.toprc文件中
选项:
-d # :指定刷新时间间隔,默认为3秒
-b :以批处理方式显示
-n #:显示多少批次
-c :显示完整的命令
-u 用户名:指定用户名
-p 进程号:指定进程
实例:top命令
top - 16:35:39【当前系统时间】
12 min【系统已经运行了12分钟】
1 user【当前共有1个用户登录】
load average:0.00, 0.02, 0.00【过去1分钟、5分钟、15分钟的平均负载,等待运行进程是长度】
Tasks: 96 total【总进程数】
1 running【正在运行的进程数】
95 sleeping【睡眠的进程数】
0 stopped【停止的进程数】
0 zombie【冻结进程数】
Cpu(s):0.0%us【用户空间占用cpu百分比】
0.3%sy【内核空间占用cpu百分比】
0.0%ni【用户进程空间内改变过优先级的进程占用cpu百分比】
99.3%id【空闲cpu百分比】
0.3%wa【等待输入的cpu时间百分比】
0.0 hi【处理硬件中断所占据的百分比】
0.0 si【处理软件中断所占据的百分比】
0.0 st【被虚拟化偷走的百分比】
Mem: 1004768k total【物理内存总量】
203204k used【使用的内存总量】
801564k free【空闲内存总量】
23624k buffers【用作内核缓存的内存量】
Swap: 2097148k total【交换区总量】
0k used【使用的交换区总量】
2097148k free【空闲交换区总量】
98900k cached【缓冲的交换区总量】
PID:进程pid
USER:用户名
PR:优先级
NI:nice值
VIRT:虚拟内存集
RES:常驻内存集
SHR:共享内存空间
S:进程状态
%CPU:占据cpu百分比
%MEM:内存百分比
TIME+:运行时间
COMMAND:启动命令
htop命令
htop命令比top更为强大的进程查看工具
1) 快速查看关键性能统计数据,如CPU(多核布局)、内存/交换使用;
2) 可以横向或纵向滚动浏览进程列表,以查看所有的进程和完整的命令行;
3) 杀掉进程时可以直接选择而不需要输入进程号;
4) 通过鼠标操作条目;
5) 比top启动得更快;
htop命令交互式常用功能键
F1 : 查看htop使用说明
F2 : 设置
F3 : 搜索进程
F4 : 过滤器,按关键字搜索
F5 : 显示树形结构
F6 : 选择排序方式
F7 : 减少nice值,这样就可以提高对应进程的优先级
F8 : 增加nice值,这样可以降低对应进程的优先级
F9 : 杀掉标记中的进程
F10 : 退出htop
/ : 搜索字符
l :显示进程打开的文件: 如果安装了lsof,按此键可以显示进程所打开的文件
u :显示所有用户,并可以选择某一特定用户的进程
s : 将调用strace追踪进程的系统调用
t : 显示树形结构
H :显示/隐藏用户线程
I :倒转排序顺序
K :显示/隐藏内核线程
M :按内存占用排序
P :按CPU排序
T :按运行时间排序
a:绑定指定进程以那个cpu运行 (一个cpu不会显示)
上下键或PgUP, PgDn : 移动选中进程左右键或Home, End : 移动列表
Space(空格) : 标记/取消标记一个进程。
命令可以作用于多个进程,例如 "kill",将应用于所有已标记的进程
htop命令选项:
-p PID:显示指定的pid进程
-C :不以颜色显示界面
-s NAME :排序指定的类型
-u 选项 : 显示指定的用户的进程信息列表。例如,htop -u himanshu 命令会只显示出用户名为 himanshu 的相关进程。
-d 选项 : 设置刷新的延迟时间。例如,htop -d 10命令会使输出在1秒后才会刷新(参数 -d 的单位是100毫秒秒)
htop示例:
(1):f1查看htop的使用说明
(2):f2设置htop属性
(3):显示pid1的进程
命令:htop -p 1
输出:
(4):不以颜色显示界面
命令:htop -C
输出:
(5):显示指定用户的进程
命令:htop -u root
输出:
(6):设置刷新的延迟时间(默认是100毫秒)
命令:htop -d 100 :以一秒刷新一次
输出:
(7)以PID大小排序
命令:htop -s PID
输出:
vmstat命令:
vmstat介绍:
vmstat命令显示虚拟内存的数据,但它可以显示进程、内存、io等系统整体运行状态。
选项:
-S [k|m]:以kib或mib为单位显示信息
-m:显示slab信息
-s:以表格方式显示事件计数器和内存状态
-d :报告磁盘状态
-p:显示指定的硬盘分区状态
参数:
事件间隔:状态信息刷新的时间间隔
次数:显示的次数
实例:1、两秒刷新一次
命令:vmstat 2
输出:
注释:
procs(进程)
r:等待运行的进程的个数;CPU上等待运行的任务的队列长度
b:处于不可中断睡眠态的进程个数;被阻塞的任务队列的长度
Memory(内存)
swpd:使用虚拟内存大小,如果swpd的值不为0,但是SImso的值长期为0,,这种情况不会影响系统性能。
free:空闲物理内存大小
buff:用作缓冲的内存大小
cache:用作缓存的内存大小,如果cache的值大的时候,说明cache处的文件数多,如果频繁访问到的文件都能被cache出,那么磁盘的读IO bi会非常小。
swap
si:数据进入swap中的数据速率(kb/s)
so:数据离开swap的速率(kb/s)
注意:内存够用的时候,这2个值都是0,如果这2个值长期大于0时,系统性能会受到影响,磁盘IO和cpu都会被消耗。有些朋友看到空闲内存(free)很少的或接近于0时,就认为内存不够用了不能光看这一点,还要结合si和so,如果free很少,但是si和so也很少(大多时候是0),那么不用担心,系统性能这时不会受到影响的。
IO(现在linux版本块的大小)
bi:从块设备读入数据到系统的速度(kb/s)
bo:保存数据至块设备的速率(kb/s)
注意:随机磁盘读写的时候,这2个值越大(如超过1024K),能看到cpu在IO等待的值也会越大
system(系统)
in:每秒中断数,包括时钟中断
cs:每秒上下文切换数
注意:上面2个值越大,会看到由内核消耗的cpu时间会越大
cpu(以百分比表示)
us:用户进程执行时间百分比(user time)
us的值比较高时,说明用户进程消耗的cpu时间多,但是如果长期超过50%的使用,那么我们就该考虑优化程序算法或者进行加速。
wa:IO等待时间百分比
wa的值高时,说明IO等待比较严重,这可能由于磁盘大量作随机访问造成,也有可能磁盘出现瓶颈。
id:空闲时间百分比
st:被虚拟内存偷走的时间百分比
2、以mib显示
命令: vmstat -S m
输出
3、以表格方式显示事件计数器和内存状态
命令:vmstat -s
输出:
4、显示sda1分区状态
命令:vmstat -p /dev/sda1
输出:
dstat命令
dstat介绍:
dstat命令是一个非常精巧的使用工具,它是一个全能的系统信息统计工具。
界面介绍:
下面默认显示-cdngy
解释:
usr:用户进程数
sys:系统进程数
idl:空闲进程数
wai:等待IO
hiq:硬件中断
siq:软件中断
read:硬盘读性能
writ:硬盘写性能
recv:网络的接受
send:网络的发送
in:页面的换入
out:页面的换出
int:系统中断次数
csw:上下文切换
选项:
-c:显示CPU系统占用,用户占用,空闲,等待,中断,软件中断等信息。
-C:当有多个CPU时候,此参数可按需分别显示cpu状态,例:-C 0,1 是显示cpu0和cpu1的信息。
-d:显示磁盘的相关信息
-D:sda,sdb,...,total
-g:使用页面的使用情况
-i:显示中断
-l:显示平均负载
-m:显示内存
-n:显示网络相关的统计数据
-N:eth1,total:有多块网卡时,指定要显示的网卡
-p:统计进程数据,包括运行队列,不可中断睡眠,新创建进程的速率
-r:启用IO请求数据,包括io的读、写相关请求
-s:统计swap的数据,已用的,空闲的
-t:输出当前时间
-y:系统状态。 --ipc:显示ipc消息队列,信号等信息
--socket:用来显示tcp udp端口状态
--fs:显示系统状态
--aio:统计异步io的数据
--ipc:进程间通信
--raw:裸套接字的相关数据
--tcp:tcp连接(listen,established,syn,time_wait,close)等状态
--udp:
--top-bio:最消耗磁盘io的进程
--top-cpu:显示最占用CPU的进程;
--top-io:最占用io的进程;
--top-mem:最占用内存的进程;
--top-lantency:延迟最大的进程
--output 文件:此选项也比较有用,可以把状态信息以csv的格式重定向到指定的文件中,以便日后查看。例:dstat --output /root/dstat.csv & 此时让程序默默的在后台运行并把结果输出到/root/dstat.csv文件
示例:
监控swap,process,sockets,filesystem并显示监控的时间
命令:dstat -tsp --socket --fs
输出:
将结果输出到文件中 加--output file
输出: