今天我们来了解一下linux系统上进程的查看及管理的工具: htop、top、dstat、ps 它们可以帮助我们快速的去查找和定位问题,并可以对当前系统的运行状况及使情况进行实时打印;
接着我们说一下什么是进程, 在系统启动后全产生许多进程,进程就是运行中的程序的一个副本,进程是有生命周期的,一般会随着自身所在bash的关闭而关闭,所有进程都是在系统启动后由/sbin/init来创建的,而进程之间存在父子关系,所有的子进程都是由其父进程创建的;
进程与进程间存在优先级:1-139
1-99:实时优先级 (数字越小,优先级越高)
100-139:静态优先级
进程类型: 守护进程: 在系统引导过程中启动的进程,跟终端无关的进程; 前台进程:跟终端相关,通过终端启动的进程 注意:也可把在前台启动的进程送往后台,以守护模式运行; 进程状态: 运行态:running 就绪态:ready 睡眠态: 可中断:interruptable 不可中断:uninterruptable 停止态:暂停于内存中,但不会被调度,除非手动启动之;stopped 僵死态:zombie
接着我们说一下这几个工具ps [options]:
选项有三种风格:UNIX、BSD、GNU
选项:
a: 所有与终端相关的进程;
x: 所有与终端无关的进程;
u: 以用户为中心来组织进程状态信息显示;
常用组全之一:aux
VSZ:虚拟内存集;(占用的虚拟内存) RSS:Resident Size,常驻内存集;
CPU%:cpu时间占用比率
MEM%:内存占用百分比
STAT: R:running(运行态) S:interruptable sleeping(可中断睡眠) D:uninterruptable sleeping(不可中断睡眠) T:Stopped(停止态) Z:zombie(僵死态) +:前台进程 l:多线程进程 N:低优先级进程 <:高优先级进程 s:session leader (进程领导者)
常用组合之二:-ef
-e:显示所有进程
-f:显示完整格式的进程信息
常用组合之三:-eFH
-F:显示完整格式的进程信息; C: cpu utilization PSR:运行于哪颗CPU之上 -H:以层级结构显示进程的相关信息
常用组合之四:-eo, axo o field1, field2,...:自定义要显示的字段列表,以逗号分隔; 常用的field:pid, ni, pri, psr, pcpu, stat, comm, tty, ppid, rtprio ni:nice值; priority:priority, 优先级; rtprio:real time priority,实时优先级;
top命令: - display Linux processes 排序: P:以占据CPU百分比排序; M:以占据内存百分比排序; T:累积占用CPU时间排序; 首部信息: uptime信息:l命令 tasks及cpu信息:t命令 内存信息:m命令 退出命令:q 修改刷新时间间隔:s 终止指定的进程:k 选项: -d #:指定刷新时间间隔,默认为3秒; -b:以批次方式显示; -n #:显示多少批次;
第一行:系统时间、运行时长、登录用户数、平均负载
第二行:总任务数、运行数、睡眠数、停止数、僵死数
第三行:CPU: us:用户空间、sy:内核空间、ni:Nice值额外占用时间、id:空闲时间、wa:等待时间、hi:硬中断消耗百分比、si:软中断消耗百分比、st:虚拟化分走的时间比
第四行:内存总数、使用的、空闲的、缓冲的
第五行:交换分区总数、使用的、空闲的、缓存的
进程管理类命令: htop命令: 选项: -d #:指定延迟时间间隔; -u UserName:仅显示指定用户的进程; -s COLUME:以指定字段进行排序; 子命令: l:显示选定的进程打开的文件列表; s:跟踪选定的进程的系统调用; t:以层级关系显示各进程状态; a:将选定的进程绑定至某指定的CPU核心;
htop 是一个非常强大的工具,下面从F1到F10可以看到具体的参数信息
F1的帮助信息
也可在首页按F2进行CPU、MEM、SWAP的显示效果进行设置:
dstat:系统资源统计命令(动态) dstat [-afv] [options..] [delay [count]]
常用选项: -c, --cpu:显示cpu相关信息; -C #,#,...,total -d, --disk:显示磁盘的相关信息 -D sda,sdb,...,tobal -g:显示page相关的速率数据; -m:Memory的相关统计数据 -n:Interface的相关统计数据; -p:显示process的相关统计数据; -r:显示io请求的相关的统计数据; -s:显示swapped的相关统计数据;
--tcp:显示tcp套接字
--udp:显示udp连接
--raw:显示裸套接字
--socket:套接字
--ipc:进程间通信信息
--top-cpu:显示最占用CPU的进程; --top-io:最占用io的进程; --top-mem:最占用内存的进程;
这些就是进程的查看及管理工具基本用法,不喜勿喷。