进程相关命令
Posted skyzy
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了进程相关命令相关的知识,希望对你有一定的参考价值。
进程相关命令
top,ps,vmstat,ss
# top
top - 08:43:01 up 13 min, 5 users, load average: 0.01, 0.22, 0.24
Tasks: 189 total, 1 running, 188 sleeping, 0 stopped, 0 zombie
Cpu(s): 1.3%us, 0.3%sy, 0.0%ni, 98.3%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 674684k total, 510748k used, 163936k free, 32368k buffers
Swap: 2047992k total, 0k used, 2047992k free, 204960k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
2785 root 20 0 193m 33m 8960 S 1.3 5.0 0:12.49 Xorg
3286 root 20 0 295m 14m 9.8m S 1.0 2.1 0:03.54 gnome-terminal
---------------------------------------------------------------------------------------------------------
说明:
第一行:top - 08:43:01 up 13 min, 5 users, load average: 0.01, 0.22, 0.24
当前系统时间 系统运行时间 当前登录的用户数 平均负载:1分钟、5分钟、15分钟
第二行:Tasks: 189 total, 1 running, 188 sleeping, 0 stopped, 0 zombie
总共有多少个进程 运行中的进程数 处于睡眠中的进程 stop状态的进程数 僵尸进程数
第三行:
Cpu(s): 1.3%us, 0.3%sy, 0.0%ni, 98.3%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
1.3%us:用户空间占用CPU的百分比1.3%
0.3%sy:内核空间占用CPU的百分比0.3%
0.0%ni:改变过优先级的进程占用CPU的百分比0.0%
98.3%id:空闲CPU百分比98.3%
0.0%wa:IO等待占用CPU的百分比0.0%
0.0%hi:硬中断(Hardware IRQ)
0.0%si:软中断(Software Interrupts)占用CPU的百分比 0.0%
0.0%st:虚拟机占用百分比
第七行以下:各进程(任务)的状态监控
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
PID:进程id
USER:进程所有者
PR:进程优先级
NI:nice值。负值表示高优先级,正值表示低优先级
VIRT:进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
RES:进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
SHR:共享内存大小,单位kb
S:进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程
%CPU:上次更新到现在的CPU时间占用百分比
%MEM:进程使用的物理内存百分比
TIME+:进程使用的CPU时间总计,单位1/100秒
COMMAND:进程名称(命令名/命令行)
-----------------------------------------
在top视图界面:
1> 在top基本视图中,按键盘数字“1”,可监控每个逻辑CPU的状况;
2> 进入top时,各进程默认是按照CPU的占用量来排序的;
3> b:打开/关闭加亮效果;
x:打开/关闭排序列的加亮效果;
shift + >”或”shift + <”可以向右或左改变排序列;
f:top进入另一个视图,在这里可以编排基本视图中的显示字段;有”*”表示可显示,没有”*”表示不显示;若要显示,按对应的字母;
4> M:根据驻留内存大小进行排序;
P:根据CPU使用百分比大小进行排序;
k:终止一个进程。系统将提示用户输入需要终止的进程PID,以及需要发送给该进程什么样的信号;
r:重新安排一个进程的优先级别。系统提示用户输入需要改变的进程PID以及需要设置的进程优先级值;
s:改变两次刷新之间的延迟时间;
t:切换显示进程和CPU状态信息;
W:将当前设置写入~/.toprc文件中;
-----------------------------------------
top [options]
-d:指定每两次屏幕信息刷新之间的时间间隔;
-p:通过指定监控进程ID来仅仅监控某个进程的状态;
-u:指定特定用户的进程;
top -b -n 1 ----可看到所有的进程状态(-n 1:显示一次)
#########################################################################
# ps命令
选项:
a:显示现行终端机下的所有进程,包括其他用户的进程;
u:显示进程拥有者、状态、资源占用等的详细信息(注意有“-”和无“-”的区别);
x:显示没有控制终端的进程。通常与 a 这个参数一起使用,可列出较完整信息;
-e:显示所有进程;
-f:完整输出显示进程之间的父子关系;
-l:较长、较详细的将该 PID 的的信息列出;
-o:自定义显示的字段;
注:ps -aux 不同于 ps aux
-----------------------------------------
# ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 08:29 ? 00:00:00 /sbin/init
root 13 2 0 08:29 ? 00:00:00 [sync_supers]
PPID:父进程PID
--------------------------------------------------------------------------------------
# ps -aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.1 19356 968 ? Ss 08:29 0:00 /sbin/init
root 2 0.0 0.0 0 0 ? S 08:29 0:00 [kthreadd]
说明:
USER: 运行进程的用户
PID: 进程ID
%CPU: CPU占用率
%MEM: 内存占用率
VSZ: 占用虚拟内存
RSS: 占用实际内存 驻留内存
TTY: 进程运行的终端
STAT: 进程状态 man ps (/STATE)
R 运行
S 可中断睡眠 Sleep
D 不可中断睡眠
T 停止的进程
Z 僵尸进程
X 死掉的进程
Ss s进程的领导者,父进程
S< <优先级较高的进程
SN N优先级较低的进程
R+ +表示是前台的进程组
Sl 以线程的方式运行
START: 进程的启动时间
TIME: 进程占用CPU的总时间
COMMAND: 进程文件,进程名
------------------------------------------------------
查看当前系统进程的uid,pid,stat,pri, 以uid号排序:
ps -eopid,stat,pri,uid --sort uid
ps axo user,pid,rss,cmd | head ----自定义显示的字段:user,pid,rss,cmd
pidof (httpd)进程名:查看指定进程(httpd)的PID
通过cpu/mem的使用来过滤排序:
ps aux --sort -%cpu | more ----more:分页显示,按cpu使用排序
ps aux --sort -pcpu | more ----按cpu使用排序
ps aux --sort -pmem | more ----按mem使用排序
ps -aux | sort -k4nr | head -10
root 1244 0.0 3.1 286056 15460 ? Ssl 20:17 0:02 /usr/bin/kube-proxy --logtostderr=true --v=0 --master=http://192.168.1.50:8080
root 1233 0.0 2.5 553052 12564 ? Ssl 20:17 0:01 /usr/bin/python -Es /usr/sbin/tuned -l -P
root 3715 0.0 2.5 457180 12192 ? Ss 20:46 0:00 /usr/sbin/httpd -DFOREGROUND
root 4987 0.2 2.5 219116 12300 ? Ssl 21:46 0:00 /usr/bin/flanneld -etcd-endpoints=http://192.168.1.50:2379 -etcd-prefix=/atomic.io/network
root 929 0.0 1.9 285296 9384 ? Ssl 20:16 0:00 /usr/sbin/rsyslogd -n
root 1248 0.0 1.7 558076 8276 ? Ssl 20:17 0:00 /usr/sbin/libvirtd
apache 4628 0.0 1.6 459264 7780 ? S 21:26 0:00 /usr/sbin/httpd -DFOREGROUND
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
sort -k4nr中(k代表从根据哪一个关键词排序,后面的数字4表示按照第四列排序;n指代numberic sort,根据其数值排序;r指代reverse,这里是指反向比较结果,输出时默认从小到大,反向后从大到小。)。本例中,可以看到%MEM在第4个位置,根据%MEM的数值进行由大到小的排序。-k3表示按照cpu占用率排序。
通过进程名和PID:
ps -C java
---> PID TTY TIME CMD
ps -f -C java
---> UID PID PPID C STIME TTY TIME CMD
根据线程来过滤进程:想知道特定进程的线程:
ps -L pid
ps -p 3785 -L
ps -eLf ---查看线程
显示安全信息,如果想要查看现在有谁登入了你的服务器:
ps -eo user,pid,args
格式化输出某用户(真实的或有效的UID)创建的进程: 系统管理员想要查看由pag用户运行的进程和这个进程的其他相关信息时: ps -U root -u pag u -U:参数按真实用户ID(RUID)筛选进程,它会从用户列表中选择真实用户名或ID。真实用户即实际创建该进程的用户; -u:参数用来筛选有效用户ID(EUID) 最后的u参数用来决定以针对用户的格式输出,由User, PID, %CPU, %MEM, VSZ, RSS, TTY, STAT, START, TIME 和 COMMAND这几 列组成。
ps实时监控进程状态:与watch命令结合:
watch -n 1 ‘ps -aux --sort -pmem’
watch命令:
watch [options] COMMAND
-n:周期
-d:高亮显示
-t:关闭watch命令在顶部的时间间隔
---------------------------------
pstree:查看进程树
监控线程数:ps -ef | grep java | wc -l
监控网络客户连接数:netstat -n | grep tcp | grep 侦听端口 | wc -l
#########################################################################
# vmstat
vmstat 2 3
每2s采集一次数据,共采集3次(单位为kb)
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
0 0 142044 79772 8560 42540 1 6 22 9 106 193 1 1 98 1 0
说明:
r:可运行队列。单核cpu,不应该超过3(经验得到的数据,只是表明大于这个值表明运行队列有点长)
b:当前被阻塞的进程,一般这些进程都是在等待某些外部资源而被阻塞。>3需要注意,而且一直出现或者经常出现,就更值得注意
swpd:虚拟内存已使用的大小,如果大于0,表示你的机器物理内存不足了,如果不是程序内存泄露的原因,那么你该升级内存了或者把耗内存的任务迁移到其他机器。
free:空闲的物理内存的大小
buff:缓存
cache:cache直接用来记忆打开的文件,给文件做缓冲,当程序使用内存时,buffer/cached会很快地被使用。)
si:有多少数据从swap到物理内存;
so:有多少数据从物理内存到swap;
bi:有多少数据从块设备读取到内存中(读磁盘);
bo:有多少数据从内存中写到块设备中(写磁盘);
in:中断数。一般代表大量设备操作成功通知内核。
cs:上下文切换。一般代表任务需要紧急被cpu处理。数字高,只能说明内核在充分发挥它的任务调度作用。不能简单通过该数字判断cpu就出现瓶颈。
us:用户进程所占用的cpu时间的百分比
sy:内核在进行任务调度所占用的cpu时间的百分比
id:cpu空闲所占用的时间百分比.仅仅0不能简单判断cpu出现瓶颈,只能说它被充分被留用。
wa:等待IO所消耗时间百分比
st:被硬件虚拟化的虚拟机所消耗掉的时间百分比
-----------------------------------------------------------------
vmstst [选项] [参数]
选项:
-a:显示活动内页;
-f:显示启动后创建的进程总数;
-m:显示slab信息;
-n:头信息仅显示一次;
-s:以表格方式显示事件计数器和内存状态;
-d:报告磁盘状态;
-p:显示指定的硬盘分区状态;
-S:指定输出信息的单位,如:M,K(默认为K/1024bytes);
参数:
时间间隔:状态信息刷新的时间间隔;
次数:显示报告的次数;
#################################################################################
# mpstat
可以查看多核心cpu中每个计算核心的统计数据;而vmstat只能查看系统整体cpu情况。
# mpstat
Linux 2.6.32-431.el6.x86_64 (vm4.cluster.com) 09/17/2017 _x86_64_ (1 CPU)
04:06:12 PM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %idle
04:06:12 PM all 0.71 0.00 0.69 0.68 0.00 0.08 0.00 0.00 97.84
说明:
%user:表示处理用户进程所使用CPU的百分比。用户进程是用于应用程序(如Oracle数据库)的非内核进程;
%nice:表示使用nice命令对进程进行降级时CPU的百分比;
%system:表示内核进程使用的CPU百分比;
%iowait:表示等待进行I/O所使用的CPU时间百分比;
%irq:表示用于处理系统中断的CPU百分比;
%soft:表示用于软件中断的CPU百分比;
%idle:显示CPU的空闲时间;
%intr/s:显示每秒CPU接收的中断总数;
计算公式:
total_current=user+system+nice+idle+iowait+irq+softirq
total_pre=pre_user+ pre_system+ pre_nice+pre_idle+ pre_iowait+ pre_irq+ pre_softirq
user=user_cur – user_pre
total=total_cur-total_pre
---------------------------------
mpstat -P CPU 时间间隔 采集次数
mpstat -P ALL 1 5 ----所有的cpu
mpstat -P 0 1 5 ----第一颗cpu
##########################################################################
# sar
##########################################################################
# iostat
iostat用于输出CPU和磁盘I/O相关的统计信息.
# iostat
Linux 2.6.32-431.el6.x86_64 (vm4.cluster.com) 09/17/2017 _x86_64_ (4 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
0.59 0.00 0.67 0.89 0.00 97.84
Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
sda 1.94 57.33 22.14 1714948 662300
scd0 0.00 0.09 0.00 2560 0
说明:
avg-cpu段:
%user: 在用户级别运行所使用的CPU的百分比;
%nice: nice操作所使用的CPU的百分比;
%sys: 在系统级别(kernel)运行所使用CPU的百分比;
%iowait: CPU等待硬件I/O时,所占用CPU百分比;
%idle: CPU空闲时间的百分比;
Device段:
tps:每秒钟发送到的I/O请求数;
Blk_read /s:每秒读取的block数;
Blk_wrtn/s:每秒写入的block数;
Blk_read:读入的block总数;
Blk_wrtn:写入的block总数;
----------------------------------------------
iostat命令的参数说明
-c:仅显示 CPU 统计信息。与 -d 选项互斥。
-d:仅显示磁盘统计信息。与 -c 选项互斥。
-k:以 KB为单位显示每秒的磁盘请求数,默认单位块。
-m:以MB为单位显示每秒的磁盘请求数。
-N:显示磁盘阵列信息
-n:显示网络文件系统NFS报告。此选项仅适用于Linux内核2.6.17以上版本。
-p device | ALL
与 -x 选项互斥,用于显示块设备及系统分区的统计信息,也可以在 -p 后指定一个设备名,如:
# iostat -p hda
或显示所有设备:
# iostat -p ALL
-t 在输出数据时,打印收集数据的时间。
-V 打印版本号和帮助信息。
-x 输出扩展信息。
iostat 2 ----每两秒显示所有的分区IO状态
# iostat /dev/sda* 2 ----每两秒显示所有分区的io状态
# iostat -kx -d sda 2 3
----查看sda的IO状态报告,每两秒打印一次,总共三次 ; -k是表示把默认以每秒多少块显示成每次多少KB;-x打印了一些扩展选项
说明:
rrqm/s:每秒的读请求数
wrqm/s:每秒的写请求数
r/s:每秒完成多少个读IO
w/s:每秒完成多少个写IO <-- IOPS=(r/s+w/s)
rsec/s:每秒读取了多少扇区的数据。 一个扇区=512字节数据
wsec/s:每秒写了多少扇区的数据。
rkB/s:每秒读了多少kb数据
wkB/s:每秒写了多少kb数据
avgrq-sz:平均请求数据的大小
avgqu-sz:是平均请求队列的长度。毫无疑问,队列长度越短越好。
await:平均完成IO需要等待多少时间, 包含服务时间,还有在队列中等待的时间。
svctm:服务时间,从IO请求产生到,完成IO的时间。从源代码里可以看出:
(r/s+w/s)*(svctm/1000)=util。
举例子:如果util达到100%,那么此时svctm=1000/(r/s+w/s),
假设IOPS是1000,那么svctm大概在1毫秒左右,如果长时间大于这个数值,
说明系统出了问题。
不过前面已经说过在磁盘阵列等多盘系统中util可能出现偏大的情况,所以svctm相应的也可
能偏大。
%util:磁盘带宽使用百分比。如果一直都是100%,说明磁盘很忙。
################################################
kill
ps -ef|grep 进程 ---获取到pid
kill -9 pid
# kill -TERM PPID ---给父进程发送一个TERM信号,试图杀死它和它的子进程。
# killall httpd ---命令杀死同一进程组内的所有进程。其允许指定要终止的进程的名称,而非PID。
# kill -HUP PID ---该命令让Linux和缓的执行进程关闭,然后立即重启。在配置应用程序的时候,这个命令很方便,在对配置文件修改后需要重启进程时就可以执行此命令。
pkill命令:可以按照进程名杀死进程
pkill(选项)(参数)
-o:仅向找到的最小(起始)进程号发送信号; -n:仅向找到的最大(结束)进程号发送信号; -P:指定父进程号发送信号; -g:指定进程组; -t:指定开启进程的终端。
僵尸进程:
# ps -A -ostat,ppid,pid,cmd | grep -e ‘^[Zz]‘
-A 参数列出所有进程
检查当前僵尸进程信息:
# ps -ef|grep defunct
杀掉僵尸进程的语句:
# ps -ef|grep defunct |grep -v grep |awk ‘{print "kill -9" $2,$3}‘
再次杀掉其父进程:
# ps -ef|grep defunct |grep -v grep |awk ‘{print "kill -18" $3}‘
以上是关于进程相关命令的主要内容,如果未能解决你的问题,请参考以下文章