ps命令
# 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
通过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: root@pts/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命令在顶部的时间间隔
---------------------------------
pstree:查看进程树
监控线程数:ps -ef | grep java | wc -l
监控网络客户连接数:netstat -n | grep tcp | grep 侦听端口 | wc -l