ps命令:
report a snapshot of the current processes
/proc/:内核中的状态信息;
内核参数:可设置其值从而调整内核运行特性的参数;/proc/sys/
状态变量:用于输出内核中统计信息或状态信息,仅用于查看;
参数:被模拟成文件系统类型;
进程:
/proc/#
#:代表数字,为进程的PID;
例如:
]# ls /proc/1/:表示系统的父进程,里面的文件都代表内核参数;
内核参数就是保存当前系统状态的;
]# cat /proc/1/cmdline:显示启动1号进程的命令行程序是什么;
]# cat /proc/1/maps:为内存映射,显示1号进程启动后用到的物理内存空间,且里面存了什么数据;
ps [options]
选项有三种风格:
1 UNIX options, which may begrouped and must be preceded by a dash.
2 BSD options, which may begrouped and must not be used with a dash.
3 GNU long options, which arepreceded by two dashes.
Unix风格:必须使用-
BSD风格:不能使用-
GNU风格:使用--
启动进程的方式:
系统启动过程中自启动:与终端无关的进程;
用户通过终端启动:与终端相关的进程;
选项:
a:所有与终端相关的进程;
x:所有与终端无关的进程;
u:以用户为中心组织进程状态信息显示;
常用组合之一:psaux
例如:
]# ps a:显示所有与终端相关的进程;
]# ps x:显示所有与终端无关的进程;
]# ps aux
显示字段表示含义:
USER:启动进程的用户;
PID:进程号;默认以PID排序;
%CPU:累计占用cpu的比率;
%MEM:内存空间占用比率;
VSZ:占用虚拟内存集的大小;
虚拟内存空间中数据的空间叫页面page,每个页面都映射到物理内存中的可用页框pageframe,且是不连续的;操作系统中可有共享库,多个进程可使用共享库,在内存中只存一份即可;
比如进程1虚拟内存空间中有5个页面,其中2个是使用的共享库的数据;
进程2虚拟内存空间中有4个页面,其中2个是使用共享库的数据;
那么,事实上,它们真正占用的空间是不包括共享库的,进程1占用为3个内存页框,进程2占用为2个内存页框;
RSS:ResidentSize常驻内存集;
内存空间分两类:物理内存和交换内存,当物理内存不够用是,可把一些数据放在交换内存上,但有些数据是不能放在交换内存中的就叫常驻内存集;
TTY:?表示不知道终端是什么;如果知道就显示终端名称;
STAT:当前进程的状态;(BSD风格)
R:running,运行态;
S:interruptablesleeping,可中断睡眠;
D:uninterruptablesleeping,不可中断睡眠;
T:Stopped,停止态;
Z:zombie,僵死态;
+:前台进程,运行在终端上,占用命令行;
l:多线程进程;
N:低优先级进程;
<:高优先级进程;
s:sessionleader,会话进程首进程;
START:启动时间;
TIME:cpu累计运行时间;
COMMAND:有中括号的表示内核线程;
-e:显示所有进程;
-f:显示完整信息;
例如:
]# ps -e:可显示字段为PID、TTY、TIME、CMD;
]# ps -ef:可显示字段为UID、PID、PPID、C、STIME、TTY、TIME、CMD;
PPID为父进程的进程号;
C:cpu占用百分比,cpuutilization;
STIME:启动时间;
TTY:与终端相关;
TIME:累计运行时间;
CMD:启动进程的命令;
常用组合之二:ps-ef
-F:显示完成格式的进程信息;
例如:
]# ps -eF:可显示字段有:UID、PID、PPID、C、SZ、RSS、PSR、ST、STIME、TTY、TIME、CMD
PSR:进程运行在哪颗cpu上;
-H:以层级结构显示进程的相关信息(显示进程及子进程);
例如:
]# ps -eFH:查看所有进程,完成格式,以层级结构显示;
常用组合之三:ps-eFH
-o field1,field2,...:自定义要显示的字段列表,以逗号分隔;
常用的field:pid,ni,pri,psr,pcpu,stat,comm,tty,ppid,rtprio
ni:ncie值;-20到19
priority:priority,优先级;
rtprio:实时优先级;
psr:进程运行在哪颗cpu上;
pcpu:cpu的利用率;
ppid:父进程的进程号;
常用组合之四:o一定要写在后面,因为后面要带参数;
ps -eo
ps axo
例如:
]# ps axo pid,comm:查看pid,comm两字段,所有与终端相关,与终端无关的进程;
top命令:
display Linux processes
有点类似于windows中的任务管理器;以动态方式不断刷新的查看当前系统上状态信息;
显示字段说明:
top - 20:01:57 up 1:17, 1 user, load average:0.00, 0.01, 0.05
Tasks: 356 total, 1 running, 355 sleeping, 0stopped, 0 zombie
%Cpu(s): 0.2 us, 0.3 sy, 0.0 ni, 99.5 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 1003184 total, 724204 free, 127660used, 151320 buff/cache
KiB Swap: 2097148 total, 2097148 free, 0 used. 721960 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
20:01:57:为当前系统时间;
up:为运行时长;
user:登录当前系统的用户数量;
load average: 0.00, 0.01, 0.05
平均负载:过去1分钟,5分钟,15分钟的平均队列长度,(是在cpu上等待运行进程的队列长度,等待越长负载越大,通常队列长度总数量不能大于cpu数量);
Tasks:进程总数、运行态、睡眠态、停止态、僵死态进程的数量;
%Cpu(s):cpu占用百分比;
us:用户空间进程占用cpu百分比;
sy:内核空间占用cpu百分比;
ni:nice值调整后额外占用cpu的时间百分比;
id:空闲百分比;
wa:等待IO完成占用cpu的百分比;
hi:处理硬件中断占用cpu的百分比;
si:处理软中断占用cpu的百分比;
st:被虚拟化偷走的cpu的百分比;
KiB Mem、KiBSwap:以KiB为单位显示物理内存和交换分区的空间占用情况;
total:总空间;
free:空闲空间;
used:已用空间;
buff/cache:用于缓冲和缓存的空间(可回收,不算真占用,因此真正可用空间为free+buff/cache);
avail Men:可用内存空间;
显示进程状态字段说明:
PID:
USER:用户;
PR:优先级;
NI:nice值;
VIRT:虚拟内存集;
RES:常驻内存集;
SHR:共享内存空间;
S:当前状态;
%CPU:cpu占用累计时间百分比;
%MEN:内存占用百分比;
TIME+:运行时长;
COMMAND:启动命令;
显示时是默认以cpu百分比排序的,有很多交互式命令:
P:以占据cpu占用百分比排序;(默认)
M:以占据内存百分比排序;
T:以累计占用cpu时间排序;
首部信息:
uptime信息:l命令,开启或关闭;
tasks及cpu信息:t命令,开启或关闭;
内存信息:m命令,开启或关闭;
退出使用:q
修改刷新时间间隔:s设定;
指定PID,终止指定的进程:k PID
选项:
-d #:启动top命令,指定刷新时间间隔,默认3秒;
-b:以批次方式显示所有进程状态信息;
-n #:显示多少批次;
1:可以分散显示cpu各个核心信息;
例如:
]# top -b -n1:仅显示一批次所有进程状态信息,就退出;
htop命令:
交互式进程查看器
各显示字段同top;
选项:
-d #:指定延迟时间间隔;
-u USERNAME:仅显示指定用户的进程;
-s COLUME:以指定字段进行排序;
子命令:
与top相同;
l:显示选定进程打开的文件列表,能跟踪一个进程所打开的文件;
s:跟踪选定的进程所发起的系统调用;
t或F5:以层级关系显示各进程状态,树状结构显示进程父子关系;
a:将选定的进程绑定在指定的CPU核心,设置进程在哪颗CPU上运行(affinity);
F2:设定显示格式、显示方式等;
u:显示用所有户进程;
H:隐藏/显示用户线程threads;
K:隐藏/显示内核线程;
F:使用光标选择进程;
P M T:根据CPU%,MEM%,TIME排序;
c:标记进程和子进程;
Esc:返回主界面;
dstat命令:
versatile tool for generating system resource statistics
dstat [-afv] [options..] [delay [count]]
默认显示:cdngy
-c:显示cpu状态相关信息;
-C #,#,..,total:表示查看指定cpu核心的信息;
-d:磁盘IO状态信息;
-D sda,dsb,...,total
-n:Internet的相关统计数据,网络状态信息;
-g:显示page相关的速率数据,内存页信息;
-y:系统状态信息;
-i:显示中断状态信息;
-l:显示平均负载状态信息;
-m:Memory的相关统计数据,显示内存状态信息;
-N eth1,total:指定网卡信息;
-p:显示process的相关统计数据,(包括运行队列,不可中断睡眠,新建进程速率);
-r:显示IO请求的相关统计数据,(包括读,写);
-s:显示swap的相关统计数据,(包括已用,空闲);
-S swap1,total:指定swap信息;
-t:显示当前时间;
--aio:显示异步IO状态信息;
--ipc:显示进程间通信状态信息(包括消息队列,semaphores,共享内存);
--lock:显示文件锁;(posix,flock,read,write)
--raw:显示裸套接字状态信息;
--tcp:显示tcp状态的进程信息;
--udp:显示udp状态的进程信息;
--top-bio:显示最消耗磁盘IO的进程;
--top-cpu:显示最消耗cpu的进程;
--top-int:显示最多中断数量的进程;
--top-mem:显示最消耗内存的进程;
--top-lantency:延迟最大的进程;
例如:
]# dstat 2 5:每2秒钟刷新一次,只显示5次;
]# dstat --tcp:查看tcp状态的进程信息;