ps命令详解程序员

# ps命令

选项:
a:显示现行终端机下的所有进程,包括其他用户的进程;
u:显示进程拥有者、状态、资源占用等的详细信息(注意有“-”和无“-”的区别);
x:显示没有控制终端的进程。通常与 a 这个参数一起使用,可列出较完整信息;
-e:显示所有进程;
-f:完整输出显示进程之间的父子关系;
-l:较长、较详细的将该 PID 的的信息列出;
-o:自定义显示的字段;
-w:显示加宽可以显示较多的资讯
注: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]
 
#ps -oppid 进程号  #查看父进程
例如: ps -oppid  88484
 
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< <优先级较高的进程
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
 
通过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
root 1247 1 0 08:58 ? 00:00:00 /usr/sbin/sshd -D
root 27688 1247 0 10:07 ? 00:00:04 sshd: [email protected]/0
 
根据线程来过滤进程:想知道特定进程的线程:
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命令在顶部的时间间隔
 

实例1:

命令:每隔一秒高亮显示网络链接数的变化情况

watch -n 1 -d netstat -ant
说明:

其它操作:
切换终端: Ctrl+x
退出watch:Ctrl+g

实例2:每隔一秒高亮显示http链接数的变化情况

命令:

watch -n 1 -d ‘pstree|grep http’

说明:

每隔一秒高亮显示http链接数的变化情况。 后面接的命令若带有管道符,需要加”将命令区域归整。

实例3:实时查看模拟攻击客户机建立起来的连接数

命令:

watch ‘netstat -an | grep:21 | / grep<模拟攻击客户机的IP>| wc -l’ 

实例4:监测当前目录中 scf’ 的文件的变化

命令:

watch -d ‘ls -l|grep scf’ 

实例5:10秒一次输出系统的平均负载

命令:

watch -n 10 ‘cat /proc/loadavg’

———————————
pstree:查看进程树
 
监控线程数:ps -ef | grep java | wc -l
监控网络客户连接数:netstat -n | grep tcp | grep 侦听端口 | wc -l
 
资料来源:
IT虾米网

原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/1841.html

(0)
上一篇 2021年7月15日
下一篇 2021年7月15日

相关推荐

发表回复

登录后才能评论