ps组合命令 ps -aux
在linux中可以使用ps命令查看进程配合grep命令可以快速的查找到服务的进程
常见的组合有ps -ef 、ps -aux
常见参数为:
a: 显示跟当前终端关联的所有进程
u: 基于用户的格式显示(U: 显示某用户ID所有的进程)
x: 显示所有进程,不以终端机来区分
[root@desktop-dcct8ee ~]# ps -aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.1 190984 3920 ? Ss 9月11 0:02 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root 2 0.0 0.0 0 0 ? S 9月11 0:00 [kthreadd]
roo 521 0.0 0.0 190328 1344 ? Ss 9月11 0:00 /usr/sbin/lvmetad -f
root 524 0.0 0.1 45648 3204 ? Ss 9月11 0:00 /usr/lib/systemd/systemd-udevd
注:最后一列[xxxx] 使用方括号括起来的进程是内核态的进程。 没有括起来的是用户态进程。
上面的参数输出每列含意:
USER: 启动这些进程的用户
PID: 进程的ID
%CPU 进程占用的CPU百分比; %MEM 占用内存的百分比;
VSZ:进程占用的虚拟内存大小(单位:KB) RSS:进程占用的物理内存大小(单位:KB)
STAT:该程序目前的状态,Linux进程有5种基本状态:
R :该程序目前正在运作,或者是可被运作;
S :该程序目前正在睡眠当中 (可说是 idle 状态啦!),但可被某些讯号(signal) 唤醒。
T :该程序目前正在侦测或者是停止了;
Z :该程序应该已经终止,但是其父程序却无法正常的终止他,造成 zombie (疆尸) 程序的状态
D 不可中断状态.
5个基本状态后,还可以加一些字母,比如:Ss、R+,如下:
它们含意如下::
<: 表示进程运行在高优先级上
N: 表示进程运行在低优先级上
L: 表示进程有页面锁定在内存中
s: 表示进程是控制进程
l: 表示进程是多线程的
+: 表示当前进程运行在前台
START:该 process 被触发启动的时间;
TIME :该 process 实际使用 CPU 运作的时间。
COMMAND:该程序的实际指令
ps组合命令 ps -ef
ps常用的参数: ps -ef
-e 显示所有进程
-f 显示完整格式输出
[root@desktop-dcct8ee ~]# ps -ef |more
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 9月11 ? 00:00:02 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root 2 0 0 9月11 ? 00:00:00 [kthreadd]
root 3 2 0 9月11 ? 00:00:00 [ksoftirqd/0]
root 5 2 0 9月11 ? 00:00:00 [kworker/0:0H]
root 7 2 0 9月11 ? 00:00:00 [migration/0]
root 8 2 0 9月11 ? 00:00:00 [rcu_bh]
包含的信息如下
UID: 启动这些进程的用户
PID: 进程的ID
PPID: 父进程的进程号
C: 进程生命周期中的CPU利用率
STIME: 进程启动时的系统时间
TTY: 表明进程在哪个终端设备上运行。如果显示 ?表示与终端无关,这种进程一般是内核态进程。另外,tty1-tty6 是本机上面的登入者程序,若为 pts/0 等,则表示运行在虚拟终端上的进程。
TIME: 运行进程一共累计占用的CPU时间
CMD: 启动的程序名称
例1:测试CPU使用时间。
dd if=/dev/zero of=/a.txt count=10 bs=100M
[root@localhost ~]# ps -axu | grep dd
注:
ps aux 是用BSD的格式来显示进程。
ps -ef 是用标准的格式显示进程
uptime查看系统负载
[root@desktop-dcct8ee ~]# uptime
00:45:16 up 4:55, 2 users, load average: 0.00, 0.01, 0.05
弹出消息含意如下:
00:45:16 当前时间
up 4:55 系统运行时间 ,说明此服务器连续运行20天了
2 user当前登录用户数
load average: 0.00, 0.01, 0.05系统负载,即任务队列的平均长度。 三个数值分别为 1分钟、5分钟、15分钟前到现在的平均值。
如果服务器的CPU为1核心,则load average中的数字>=3 负载过高,如果服务器的CPU为4核心,则load average中的数字>=12 负载过高。
经验:单核心,1分钟的系统平均负载不要超过3,就可以,这是个经验值。
top命令动态查看
进程和CPU的信息( 第二、三行)
Tasks: 481 total进程总数
1 running正在运行的进程数
480 sleeping睡眠的进程数
0 stopped停止的进程数
0 zombie僵尸进程数
Cpu(s): 0.0% us系统用户进程使用CPU百分比。
0.0% sy内核中的进程占用CPU百分比
0.0% ni用户进程空间内改变过优先级的进程占用CPU百分比
98.7% id空闲CPU百分比
0.0% wacpu等待I/0完成的时间总量。
内存信息(第四五行)
Mem: 2033552k total物理内存总量
340392k used使用的物理内存总量
1376636k free空闲内存总量
316524k buff/cache用作内核缓存的内存量。
和free -k 一个意思
Swap: 2017948k total交换区总量
0k used使用的交换区总量
192772k free空闲交换区总量
1518148 avail Mem总的可利用内存是多少
第7行进程信息
PID进程id
USER进程所有者的用户名
PR优先级(由内核动态调整),用户不能
NI进程优先级。 nice值。负值表示高优先级,正值表示低优先级,用户可以自己调整
VIRT(virtual memory usage)虚拟内存,是进程正在使用的所有内存(ps中标为VSZ)
VIRT:virtual memory usage 虚拟内存
1、进程“需要的”虚拟内存大小,包括进程使用的库、代码、数据等
2、假如进程申请100m的内存,但实际只使用了10m,那么它会增长100m,而不是实际的使用量
RES(resident memory usage)是进程所使用的物理内存。实际实用内存(ps中标为RSS)
RES:resident memory usage 常驻内存
1、进程当前使用的内存大小,但不包括swap out
2、包含其他进程的共享
3、如果申请100m的内存,实际使用10m,它只增长10m,与VIRT相反
4、关于库占用内存的情况,它只统计加载的库文件所占内存大小
SHR共享内存大小,单位kb
SHR:shared memory 共享内存
1、除M了自身进程的共享内存,也包括其他进程的共享内存
2、虽然进程只使用了几个共享库的函数,但它包含了整个共享库的大小
3、计算某个进程所占的物理内存大小公式:RES – SHR
4、swap out后,它将会降下来
S进程状态。 D=不可中断的睡眠状态 R=运行中或可运行 S=睡眠中 T=已跟踪/已停止 Z=僵停
%CPU上次更新到现在的CPU时间占用百分比
%MEM进程使用的物理内存百分比
TIME+进程使用的CPU时间总计,单位1/100秒
COMMAND命令名/命令行
top快捷键:
默认3s刷新一次,按s修改刷新时间
按空格:立即刷新。
q退出
P:按CPU排序
M:按内存排序
T按时间排序
p: 进程IP,查看某个进程状态
数字键1:显示每个内核的CPU使用率
u/U:指定显示的用户
h:帮助
lsof命令
lsof命令用于查看你进程打开的文件,打开文件的进程,进程打开的端口(TCP、UDP)
-i<条件>:列出符合条件的进程。(4、6、协议、:端口、@ip )
-p<进程号>:列出指定进程号所打开的文件;
[root@desktop-dcct8ee ~]# lsof -p 3178
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
screen 3178 root cwd DIR 253,0 208 33574977 /root
screen 3178 root rtd DIR 253,0 224 64 /
screen 3178 root 2w CHR 1,3 0t0 1028 /dev/null
screen 3178 root 4u unix 0xffff9278b654f800 0t0 49598 /var/run/screen/S-root/3178.pts-2.desktop-dcct8ee
screen 3178 root 5u REG 0,20 3072 17681 /run/utmp
screen 3178 root 7u CHR 136,2 0t0 5 /dev/pts/2
[root@desktop-dcct8ee ~]# lsof -i :22
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
sshd 961 root 3u IPv4 17250 0t0 TCP *:ssh (LISTEN)
sshd 961 root 4u IPv6 17252 0t0 TCP *:ssh (LISTEN)
pstree工具使用
pstree工具是用于以树形的形式查看进程
常用参数 -p 指定显示进程端口PID
[root@desktop-dcct8ee ~]# pstree
systemd─┬─NetworkManager───2*[{NetworkManager}]
├─VGAuthService
├─auditd───{auditd}
├─chronyd
├─systemd-udevd
├─tuned───4*[{tuned}]
└─vmtoolsd───{vmtoolsd}
进程的优先级
优先级取值范围为(-20,19),越小优先级越高, 默认优先级是0
命令1:nice 指定程序的运行优先级
格式:nice n command
命令2:renice 改变程序的运行优先级
格式:renice -n pid
例1:指定运行vim的优先级为5
[root@desktop-dcct8ee ~]# nice -n 5 vim a.txt