Linux中进程管理的重要性不言而喻,那么废话不多说。
pstree:显示进程树(没什么好说的)
ps:显示当前时刻进程的信息(非动态)
其选项有三种风格:
UNIX风格:带“-”
BSDUNIX风格:不带“-”
GNU长选项:带“--”
常用选项:
基于BSD风格:
a:显示与终端相关的进程
x:显示与终端无关的进程
u:以用户为中心显示进程信息
常用组合:ps aux
[root@bogon ~]# ps aux USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND 0 1 0.0 0.7 44488 7132 ? Ss 17:35 0:02 /usr/lib/systemd/systemd --switched-root --s 0 2 0.0 0.0 0 0 ? S 17:35 0:00 [kthreadd] 0 3 0.0 0.0 0 0 ? S 17:35 0:00 [ksoftirqd/0] 0 5 0.0 0.0 0 0 ? S< 17:35 0:00 [kworker/0:0H] 0 7 0.0 0.0 0 0 ? S 17:35 0:00 [migration/0] 0 8 0.0 0.0 0 0 ? S 17:35 0:00 [rcu_bh] 0 9 0.0 0.0 0 0 ? S 17:35 0:00 [rcuob/0] 0 10 0.0 0.0 0 0 ? S 17:35 0:00 [rcuob/1] 0 11 0.0 0.0 0 0 ? S 17:35 0:00 [rcuob/2]
信息说明:
USER:用户
PID:进程pid号
%CPU:cpu使用累计使用百分比
%MEM:内存累计使用百分比
VSZ:虚拟内存集
RSS:长驻内存集
TTY:进程运行在哪个终端上
STAT:进程运行状态
S:可中断睡眠(可随时唤醒)
D:不可中断睡眠(不可随时唤醒)
R:正在运行中
T:停止运行
Z;僵死状态
s:会话控制
N:优先级较低的进程
<:优先级较高的进程
+:前端进程
l:多线程进程
START:进程运行开始时间
TIME:进程累计占用cpu时间
COMMAND:此进程的命令
axo 自定义进程选项:显示自定义选项的列表,有pid(进程pid号), ni(nice值), pri(优先级), psr, pcpu, stat(状态), comm(命令), tty(终端), ppid(父进程号), rtprio(实时优先级)
基于UNIX风格的选项:
-e:显示所有进程(相当于ps ax)
-f:显示进程详细信息
常用组合:ps -ef
[root@bogon ~]# ps -ef UID PID PPID C STIME TTY TIME CMD 0 1 0 0 17:35 ? 00:00:03 /usr/lib/systemd/systemd --switched-root --system --deseriali 0 2 0 0 17:35 ? 00:00:00 [kthreadd] 0 3 2 0 17:35 ? 00:00:00 [ksoftirqd/0] 0 5 2 0 17:35 ? 00:00:00 [kworker/0:0H] 0 7 2 0 17:35 ? 00:00:00 [migration/0] 0 8 2 0 17:35 ? 00:00:00 [rcu_bh] 0 9 2 0 17:35 ? 00:00:00 [rcuob/0] 0 10 2 0 17:35 ? 00:00:00 [rcuob/1] 0 11 2 0 17:35 ? 00:00:00 [rcuob/2] ....
信息说明:大多与前面一样,只说明C是代表cpu累计使用比
-F:显示更加详细的进程信息
-H:以层级结构显示进程的相关信息
常用组合:ps -eFH
[root@bogon ~]# ps -eFH UID PID PPID C SZ RSS PSR STIME TTY TIME CMD 0 2 0 0 0 0 0 17:35 ? 00:00:00 [kthreadd] 0 3 2 0 0 0 0 17:35 ? 00:00:00 [ksoftirqd/0] 0 5 2 0 0 0 0 17:35 ? 00:00:00 [kworker/0:0H] 0 7 2 0 0 0 0 17:35 ? 00:00:00 [migration/0] 0 8 2 0 0 0 0 17:35 ? 00:00:00 [rcu_bh] 0 9 2 0 0 0 0 17:35 ? 00:00:00 [rcuob/0] 0 10 2 0 0 0 0 17:35 ? 00:00:00 [rcuob/1]
信息说明:PSR:此进程运行在哪个cpu上,另外说一下带[]的表示内核线程
-eo 自定义进程选项
pgrep:显示匹配模式的进程(看grep就知道,加上p就是进程)
常用选项:
-u:显示指定用户启动的进程
-U:显示真正由指定用户启动的进程
-t:显示指定终端的进程
-l:显示进程名
-a:显示完整格式的进程名
-p:显示其父进程pid为指定pid的子进程
[root@bogon ~]# pgrep ssh -a 1360 /usr/sbin/sshd -D 1489 sshd: [root@bogon ~]#
pkill:与pgrep用法一样,只是这是杀死匹配到的进程。
pidof:根据指定的进程名取其pid号
[root@bogon ~]# pidof sshd 1489 1360 [root@bogon ~]#
top:以动态的形式显示进程信息(默认刷新为3s)
top - 22:57:17 up 5:21, 2 users, load average: 0.00, 0.01, 0.05 Tasks: 222 total, 2 running, 220 sleeping, 0 stopped, 0 zombie %Cpu(s): 0.0 us, 0.2 sy, 0.0 ni, 99.8 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st KiB Mem : 1009304 total, 727184 free, 135800 used, 146320 buff/cache KiB Swap: 2097148 total, 2097148 free, 0 used. 725188 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 73 0 20 0 0 0 0 S 0.3 0.0 0:02.19 rcu_sched 74 0 20 0 0 0 0 S 0.3 0.0 0:01.13 rcuos/0 75 0 20 0 0 0 0 S 0.3 0.0 0:02.42 rcuos/1 ....
信息说明:
第一行:top启动的时间;系统运行的时间;多少用户登录;1,5,15分钟的cpu等待队列长度
第二行:作业信息:总进程数量;进程的运行状态信息
第三行:cpu使用百分比:
us:用户空间使用比
sy:系统空间使用比
ni:切换nice值运行进程使用比
id:空闲时间比
wa:等待占用比
hi:硬中断占用比
si:软中断占用比
st:虚拟软件偷走比
第四行:物理内存信息(单位为KB),分别为:总物理内存大小,空闲物理内存大小,已使用物理内存大小,缓冲/缓存物理内存大小
第五行:交换内存信息(单位为KB),分别为:总的交换内存大小,空闲交换内存大小,已使用交换内存大小,总的可用内存大小(可用内存加上缓冲/缓存内存)
第六行:
PR:进程优先级
SHR:共享内存集
常用使用方法:
P:以cpu累计使用比倒叙排列(从大到小)
M:以内存累计占用时间倒叙排列
T:以占用cpu累计时间倒叙排列
l:开启关闭第一行
t:开启关闭第二三行
m:开启关闭第四五两行
1:显示每颗cpu的状态信息
s:修改刷新时间
常用选项:
-d #:以指定的刷新时间启动
-b:以批次方式显示
-n #:以多批次方式显示
uptime:显示top的第一行信息
[root@bogon ~]# uptime 23:18:42 up 5:42, 2 users, load average: 0.00, 0.02, 0.05 [root@bogon ~]#
htop:比top更炫酷更强大的的动态显示进程信息的命令
常用选项:
-d #:指定延迟时间间隔;
-u UserName:仅显示指定用户的进程;
-s COLUME:以指定字段进行排序;
常用子命令:
l:显示选定的进程打开的文件列表;
s:跟踪选定的进程的系统调用;
t:以层级关系显示各进程状态;
a:将选定的进程绑定至某指定的CPU核心;
当然还有别的有趣的玩法,可以F1查看帮助,F2设置自己喜欢的界面。
vmstat:显示虚拟内存状态
[root@bogon ~]# vmstat procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 1 0 0 721168 948 151192 0 0 3 0 16 20 0 0 100 0 0 [root@bogon ~]#
信息说明:
procs:r代表等待运行的进程个数,b代表阻塞进程的个数
memory:swap表示交换空间使用总量,free表示空闲的物理内存总量,buff表示用于缓冲的内存大小,cache代表用于缓存的内存大小。
swap:si代表数据进入swap的速度,so代表数据离开swap的速度
io:bi代表从块设备读取数据到系统的速度,bo代表写入快设备的速度
system:in代表中断毒素,cs代表上下文切换速度
cpu:请参考top信息说明
glances:一直基于curres的交互平台的监视工具
基本信息也差不多
常用选项:
-b:以Byte为单位显示网上数据速率;
-d:关闭磁盘I/O模块;
-m:关闭mount模块;
-n:关闭network模块;
-t #:刷新时间间隔;
-1:每个cpu的相关数据单独显示;
-o {HTML|CSV}:输出格式;
-f /PATH/TO/SOMEDIR:设定输出文件的位置;
C/S模式下运行glances命令(下面这方法可以用浏览器打开实现实时监控):
服务模式:
glances -s -B 本机的某地址
客户端模式:
glances -c 远程服务器的地址
dstat命令:强大到没朋友的工具,谁用谁知道
常用选项:
-c, --cpu:显示cpu相关信息;
-C #,#,...,total
-d, --disk:显示磁盘的相关信息
-D sda,sdb,...,tobal
-g:显示page相关的速率数据;
-m:Memory的相关统计数据
-n:Interface的相关统计数据;
-p:显示process的相关统计数据;
-r:显示io请求的相关的统计数据;
-s:显示swapped的相关统计数据;
--tcp
--udp
--raw
--socket
--ipc
--top-cpu:显示最占用CPU的进程;
--top-io:最占用io的进程;
--top-mem:最占用内存的进程;
--top-lantency:延迟最大的进程;