ps
*语法:ps [options]
注意:该命令查看的是某一时刻的瞬间进程运行的状态,非连续查看
支持三种选项:
UNIX选项如-a(选项前加-)
BSD选项如a
默认显示当前终端中的进程
a选项包括所有终端中的进程
x选项包括不连接终端的进程(TTY的状态为?的进程)
u选项显示进程所有者的信息
f选项显示进程的父进程
o属性… 选项显示定制的信息:
pid、comm、%cpu、%mem、state、tty、euser、ruser***
[14:38 root@Centos6.8/proc/10]# ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.0 19352 1548 ? Ss 08:46 0:02 /sbin/init
root 2 0.0 0.0 0 0 ? S 08:46 0:00 [kthreadd]
root 2007 0.0 0.0 4064 544 tty2 Ss+ 08:48 0:00 /sbin/mingetty /dev/tty2
root 2012 0.0 0.0 4064 540 tty3 Ss+ 08:48 0:00 /sbin/mingetty /dev/tty3
root 2014 0.0 0.0 4064 544 tty4 Ss+ 08:48 0:00 /sbin/mingetty /dev/tty4
root 2017 0.0 0.0 4064 540 tty5 Ss+ 08:48 0:00 /sbin/mingetty /dev/tty5
root 2019 0.0 0.0 4064 544 tty6 Ss+ 08:48 0:00 /sbin/mingetty /dev/tty6
root 2028 0.0 0.1 12640 2876 ? S< 08:48 0:00 /sbin/udevd -d
root 2060 0.0 0.1 164924 3564 ? Sl 08:48 0:00 /usr/libexec/gdm-simple-slave --display-id /org/gnome/DisplayManager
root 2064 0.0 1.5 196384 29084 tty1 Ssl+ 08:48 0:04 /usr/bin/Xorg :0 -br -verbose -audit 4 -auth /var/run/gdm/auth-for-g
root 2087 0.0 0.1 1036464 3360 ? Sl 08:48 0:00 /usr/sbin/console-kit-daemon --no-daemon
gdm 2159 0.0 0.0 20044 696 ? S 08:48 0:00 /usr/bin/dbus-launch --exit-with-session
**USER:发起进程的用户
PID:PID号
%CPU:使用CPU百分比
%MEM:使用内存百分比
VSZ:Virtual memory SiZe,虚拟内存集,线性内存
RSS:ReSidentSize, 常驻内存集
TTY:和终端相关
STAT:进程状态
START:进程开始时间
TIME:进程真正在CPU运行的时间,而非挂表时长
COMMANDD:发起进程的命令,【如果命令中有中括号,代表是内核进程】**
ps - 按进程消耗内存多少排序
ps -eo rss,pmem,pcpu,vsize,args | sort -k 1 -r -n | less
top
top
top - 16:55:12 up 4 days, 19:15, 3 users, load average: 0.00, 0.00, 0.00
Tasks: 169 total, 1 running, 168 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.7%us, 0.7%sy, 0.0%ni, 98.3%id, 0.0%wa, 0.0%hi, 0.3%si, 0.0%st
Mem: 1004768k total, 876500k used, 128268k free, 114876k buffers
Swap: 2031612k total, 8k used, 2031604k free, 388272k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
4635 w 20 0 291m 17m 14m S 1.0 1.8 8:20.21 vmtoolsd
1552 root 20 0 173m 8104 4540 S 0.7 0.8 15:36.70 vmtoolsd
3074 mysql 20 0 895m 73m 12m S 0.7 7.5 6:55.30 mysqld
4572 w 20 0 494m 10m 8192 S 0.7 1.1 0:12.53 gnome-settings-
7 root 20 0 0 0 0 S 0.3 0.0 9:44.50 events/0
24 root 20 0 0 0 0 S 0.3 0.0 3:02.92 ata_sff/0
729 root 20 0 0 0 0 S 0.3 0.0 0:28.84 vmmemctl
3492 root 20 0 134m 9528 1052 S 0.3 0.9 7:19.99 redis-server
4983 root 20 0 99976 4048 3088 S 0.3 0.4 0:03.41 sshd
5373 root 20 0 15032 1272 928 R 0.3 0.1 0:00.17 top
1 root 20 0 19356 1544 1228 S 0.0 0.2 0:07.43 init
2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd
3 root RT 0 0 0 0 S 0.0 0.0 0:00.00 migration/0
4 root 20 0 0 0 0 S 0.0 0.0 0:56.32 ksoftirqd/0
5 root RT 0 0 0 0 S 0.0 0.0 0:00.00 stopper/0
6 root RT 0 0 0 0 S 0.0 0.0 0:13.14 watchdog/0
8 root 20 0 0 0 0 S 0.0 0.0 0:00.00 events/0
9 root 20 0 0 0 0 S 0.0 0.0 0:00.00 events_long/0
10 root 20 0 0 0 0 S 0.0 0.0 0:00.00 events_power_ef
11 root 20 0 0 0 0 S 0.0 0.0 0:00.00 cgroup
12 root 20 0 0 0 0 S 0.0 0.0 0:00.00 khelper
13 root 20 0 0 0 0 S 0.0 0.0 0:00.00 netns
14 root 20 0 0 0 0 S 0.0 0.0 0:00.00 async/mgr
15 root 20 0 0 0 0 S 0.0 0.0 0:00.00 pm
16 root 20 0 0 0 0 S 0.0 0.0 0:06.45 sync_supers
uptime
过去15分钟 CPU的负载
16:58:37 up 109 days, 16:57, 1 user, load average: 0.00, 0.00, 0.00
如果这个数除以CPU的数目,结果高于5的时候就表明系统在超负荷运转了,正常应该控制在小于1的范围内,通常我们先看15分钟load,如果load很高,再看1分钟和5分钟负载,查看是否有下降趋势。
第一行是任务队列信息,同 uptime 命令的执行结果。其内容如下:
01:06:48 当前时间
up 1:22 系统运行时间,格式为时:分
1 user 当前登录用户数
load average: 0.06, 0.60, 0.48 系统负载,即任务队列的平均长度。
三个数值分别为 1分钟、5分钟、15分钟前到现在的平均值。
第二、三行为进程和CPU的信息。当有多个CPU时,这些内容可能会超过两行。内容如下:
Tasks: 29 total 进程总数
1 running 正在运行的进程数
28 sleeping 睡眠的进程数
0 stopped 停止的进程数
0 zombie 僵尸进程数
Cpu(s): 0.3% us 用户空间占用CPU百分比
1.0% sy 内核空间占用CPU百分比
0.0% ni 用户进程空间内改变过优先级的进程占用CPU百分比
98.7% id 空闲CPU百分比
0.0% wa 等待输入输出的CPU时间百分比
0.0% hi
0.0% si
最后两行为内存信息。内容如下:
Mem: 191272k total 物理内存总量
173656k used 使用的物理内存总量
17616k free 空闲内存总量
22052k buffers 用作内核缓存的内存量
Swap: 192772k total 交换区总量
0k used 使用的交换区总量
192772k free 空闲交换区总量
123988k cached 缓冲的交换区总量。
vmstat
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 0 629036 269024 553024 0 0 6 4 163 109 1 2 97 0 0
sy的值比较高时,就说明内核消耗的CPU时间多;如果us+sy超过80%,就说明CPU的资源存在不足。
r 表示运行队列(就是说多少个进程真的分配到CPU),如果这个值超过了CPU数目就会出现CPU瓶颈,这个和top的负载有关系。
b 表示阻塞的进程
swpd 虚拟内存已经使用大小,如果大于0表示机器物理内存不足
free 表示空闲的物理内存的大小,
buff linux/unix 系统是用来存储目录里面有什么内容,权限等的缓存,
cache 用来记忆我们打开的文件,给文件做缓存,把空闲的物理内存的部分那俩做文件和目录的缓存,是为了提高程序执行的性能,当程序使用内存时。buffer/cached会很快的被使用
si 每秒从磁盘读入虚拟内存的大小,如果大于0 表示物理内存不够用
so 每秒虚拟内存写入磁盘的大小同上
bi 块设备每秒接收的块数量,这里的块设备实质系统上所有的磁盘和其他块设备,默认块大小是1024byte
bo 块设备每秒发送的块数量,同上, bi和bo Ibanez都要接近0 ,不然就是IO过于频繁,需要调整
这里设置的bi+bo参考值为1000,如果超过1000,而且wa值比较大,则表示系统磁盘IO性能瓶颈。
in 每秒CPU的中断次数,包括时间中断。
cs 每秒上下文切换次数,例如我们调用系统函数,就要进行上下文切换,线程的切换,也要进程上下文切换,这个值要越小越好,太大了,要考虑调低线程或者进程的数目,例如在apache和nginx这种web服务器中,我们一般做性能测试时会进行几千并发甚至几万并发的测试,选择web服务器的进程可以由进程或者线程的峰值一直下调,压测,直到cs到一个比较小的值,这个进程和线程数就是比较合适的值了。系统调用也是,每次调用系统函数,我们的代码就会进入内核空间,导致上下文切换,这个是很耗资源,也要尽量避免频繁调用系统函数。上下文切换次数过多表示你的CPU大部分浪费在上下文切换,导致CPU干正经事的时间少了,CPU没有充分利用,是不可取的。
us 用户CPU时间,我曾经在一个做加密解密很频繁的服务器上,可以看到us接近100,r运行队列达到80(机器在做压力测试,性能表现不佳)。
us的值比较高时,说明用户进程消耗的CPU时间多,如果长期大于50%,需要考虑优化程序啥的。
sy的值比较高时,就说明内核消耗的CPU时间多;如果us+sy超过80%,就说明CPU的资源存在不足。
sy 系统CPU时间,如果太高,表示系统调用时间长,例如是IO操作频繁。
id 空闲 CPU时间,一般来说,id + us + sy = 100,一般我认为id是空闲CPU使用率,us是用户CPU使用率,sy是系统CPU使用率。
wa 等待IO CPU时间。
wa列表示IO等待所占的CPU时间百分比。wa值越高,说明IO等待越严重。如果wa值超过20%,说明IO等待严重。
得到特定进程的内存使用信息
得到mysqld进程的pid
[root@6 ~]# pidof mysqld
top指定查看PID
[root@6 ~]# top -p 21538
查看特定进程线程情况
top -H -p
转自:http://www.mamicode.com/info-detail-1519419.html
https://my.oschina.net/u/1396185/blog/366043