进程管理工具
查看进程
pstree 显示进程树
-p:显示PID
ps 查看进程
ps [options]...
支持三种选项
Unix选项:-a -e -f
BSD选项:a u x
GNU选项:--sort
默认显示当前终端的进程
BSD选项
a:显示所有终端的进程
u:显示进程所有者
x:不链接终端的进程
k|--sort 属性:对属性排序,属性前加-表示倒序
f:选项显示进程树,相当于--forest
o 属性...:选项显示定制的信息pid,cmd,%cpu,%me
常用属性
ni:nice值
pri:priority 优先级
psr:prcessor CPU编号
rtpro:实时优先级
ps axo pid,cmd,psr,ni,pri,rtprio
L:显示支持的属性列表
euser:有效用户
ruser:真实用户
Unix选项
-e | -A:显示所有进程
-f:显示完整格式程序信息
-F:显示更完整格式的进程信息
-C cmdlist:指定命令,多个命令用逗号分隔
-L:显示线程
-H:以层级格式显示进程相关信息
-u userlist:指定有效用户ID或名称
-U userlist:指定真正的用户ID或名称
-g gid或groupname 指定有效的Pid或组名称
-G gid或groupname 指定真正的Gid或组名称
-p pid:显示指定Pid进程
--ppid pid:显示属于Pid的子进程
-M | Z:显示SELinux信息
常用组合
ps aux,ps -ef,ps -eFH
ps -eo pid,tid,class,rtprio,ni,pri,pcpu,stat,comm
ps axo stat,euid,ruid,tty,tpgid,sess,pgrp,ppid,pid,pcpu,comm
通过PID来显示所属的进程:
ps -fp pid1,pid2,...
以父进程ID来显示其下所有的进程
ps -f --ppid #
使用PID来查找进程名称
ps -p pid -o comm=
检查一个进程的执行时间
ps -eo comm,etime,user | grep processname
按tty显示所属进程
ps -ft tty
查找指定进程名所有的所属PID,在编写需要从std输出或文件读取PID的脚本时这个参数很有用
ps -C httpd,sshd -o pid=
搜索进程
ps 选项 | grep
pgrep 搜索进程
pgrep [options] pattern 与pkill共用一个man帮助
-u uid:effective user,生效用户
-U uid:real user,真正发起运行命令者
-l:显示进程名
-a:完整格式显示进程名
-P pid:显示指定进程的子进程
pidof 按程序名查找pid
pidof command
系统监控工具
uptime
显示系统时间 系统启动到现在所经过的时间 上线用户数 平均负载
free 查看内存信息
free [options]
-b 以字节为单位
-m 以MB为单位
-g 以GB为单位
-h 易读格式
-o 不显示-/+buffers/cache行
-t 显示RAM + swap的总和
-s n 刷新间隔为n秒
-c n 刷新n次后即退出
pmap 显示进程对应的内存映射
-x:显示详细格式信息
cat /proc/PID/maps 查看内存具体使用情况
top
第一行:当前系统时间 系统启动到现在所经过的时间 当前上线用户数 系统在1,5,15分钟的平均负载
相当于uptime命令;交互按键:l
注意:平均负载值越小,系统越空闲;如果高于1,当前系统负载过高
第二行:显示的是目前进程总量与个别程序在什么状态(running,sleeping,stopped,zombie)
注意:最后的zombie数值,如果不是0就需要查看一下是哪个进程处于僵死态
第三行: 显示的是CPU整体负载,如果是多核心,可使用数字1键来切换显示方式
us:user space 用户运行程序占用CPU的百分比
sy:system用于运行内核占用CPU的百分比
ni:nice用户进程空间所改变过优先级的进程占用CPU的百分比
id:idle空闲CPU百分比
wa:wait to 等待I/O花费时间
hi:hardware interrupt 硬键中断占用CPU百分比
si:software interrupt 软键中断占用CPU百分比
st:stolen,被虚拟机“偷走”的百分比
第四行:物理内存使用情况 第五行:交换分区情况 按m键可切换显示方式
下面部分每一行的含义:
PID:每个进程的PID
USER:进程所属的使用者
PR:Priority,进程优先级,越小越优先
NI:Nice优先级,越小越早被运行
VIRT:进程需要的虚拟内存大小,而非使用的虚拟内存大小
RES:进程当前使用的内存大小,不包括swap
SHR:进程与其它进程共享的内存大小,可通过RES-SHR来计算进程所占用的物理内存大小
S:进程状态
%CPU:CPU使用率
%MEM:内存使用率
TIME+:CPU使用时间的累加
命令用法:
交互按键
l:是否显示首部信息
t:task及cpu信息
1数字:CPU显示方式
m:内存显示方式
P:以占据CPU百分比排序
M:以占据Memory空间大小排序
T:CPU累积占用时间排序
s:修改延迟时长
k:终止指定进程
W:保存
q:退出命令
选项
-d #:指定刷新间隔
-n #:指定刷新次数
-b:全部显示
htop
top的增强版本;可使用选项、交互按键、也可鼠标点击
命令用法:
交互按键
s:显示光标所在进程执行的系统调用
l:显示光标所在处进程所打开的文件列表
a:绑定进程到指定CPU
t:显示进程树
#:快速定位光标至PID为#的进程上
选项
-d #:指定刷新时长
-u USERNAME:显示指定用户的进程
-s COLUMN:根据指定字段进行排序
iotop 监视磁盘I/O使用情况
第一行:Read和Write速率总计
第二行:实际的Read和Write速率
第三行:
线程ID(进程ID) 优先级 用户 磁盘读速率 磁盘写速率 swap交换百分比 IO等待所占百分比 线程/进程命令
命令用法:
交互按键
left和right方向键:改变排序
r:反向排序
o:只显示正在产生I/O的进程或线程
p:TID与PID切换
a:显示累积的I/O,而不是带宽
i:改变线程优先级
q:退出
选项
-o|--only:只显示正在产生I/O的进程或线程
-b|--batch:非交互模式;一般用来记录日志
-n N|--iter=N:设置监测次数,默认无限
-d #|--delay=#:设置监测间隔,默认1秒,可接受1.1
-u User|--user=USER:指定监测某个用户产生的I/O
-P|--processes:仅显示进程,默认显示线程
-a|--accumulated:显示累积的I/O,而不是带宽
-k|--kilobytes:使用kB单位,脚本编程有用
-t|--time:加时间戳,非交互模式
-q|--quiet:禁止头几行,非交互模式
-q:只在第一次监测时显示列名
-qq:永远不显示列名
-qqq:永远不显示I/O汇总
glances 远程监控工具(监视CPU,负载,内存,磁盘I/O,网络流量,文件系统,系统温度等信息)
上面部分显示的是:CPU,Load系统负载,Mem内存使用,swap交换分区的使用情况
中间部分显示的是:Network网络接口,Tasks任务进程的使用情况
左侧部分显示有磁盘I/O,分区使用情况等
glances可以为Unix和Linux性能专家提供监视和分析性能数据功能,包括:
CPU使用率、内存使用情况、内核统计信息和运行队列信息
磁盘I/O速度、传输和读/写比率,文件系统中的可用空间,磁盘适配器
网络I/O速度、传输和读/写比率,页面空间和页面速度,消耗资源最多的进程,计算机信息和系统资源
命令用法
glances 支持远程模式,基于C/S模式工作
服务器模式
glances -s -B IPADDR 指明监听本机哪个地址
客户端模式
glances -c IPADDR 要连接的服务器地址
交互命令
a:Sort processes automatically
l :Show/hide logs
c :Sort processes by CPU%
b :Bytes or bits for network I/O
m :Sort processes by MEM%
w: Delete warning logs
p :Sort processes by name
x: Delete warning and critical logs
i :Sort processes by I/O rate
1 :Global CPU or per-CPU stats
d :Show/hide disk I/O stats
h :Show/hide this help screen
f :Show/hide file system stats
t :View network I/O as combination
n :Show/hide network stats
u :View cumulative network I/O
s :Show/hide sensors stats
q :Quit (Esc and Ctrl-C also work)
y :Show/hide hddtemp stats
选项
-b:以Byte为单位显示网卡数据速率
-d:关闭磁盘I/O模块
-f /path/to/somefile:设定输入文件位置
-o {HTML|CSV}:输出格式
-m:禁用mount模块
-n:禁用网络模块
-t #:延迟时间间隔
-1数字:每个CPU相关数据单独显示
vmstat 可动态显示系统资源使用情况
显示内容
procs 进程相关
r:等待运行的进程个数;(队列长度)
b:处理不可中断睡眠状态的进程个数(即IO阻塞队列长度)
memory 内存相关
swpd:交换内存使用量
free:空闲物理内存量
buff:用于buffer的内存总量
cache:用于cache的内存总量
swap 交换分区相关
si:数据进入swap中的速率(kb/s)
so:数据离开swap的速率(kb/s)
io
bi:从块设备读入数据到系统的速率
bo:保存数据至块设备的速率
system 系统相关
in:interrupts 中断速率,每秒被中断的次数
cs:context switch 进程切换的速率
cpu CPU相关
us:user space 用户运行程序占用CPU百分比
sy:system(kernel space)用于运行内核占用CPU的百分比
id:idle空闲CPU百分比
wa:wait io等待I/O花费时间
st:stolen,被虚拟机偷走的百分比
命令用法
vmstat [options] [delay [count]]
-s:显示内存统计数据
-S k, K, m or M 指定单位
x y:每隔x秒刷新y次
iostat 统计CPU和IO等信息
也可动态监测
dstat 系统资源统计 代替vmstat,iostat
显示内容
total-cpu-usage:cpu使用率
dsk/total:磁盘读写总数
net/total:网络设备发送和接收数据总数
paging: 系统的分页活动,分页指的是一种内存管理技术用于查找系统场景,一个较大的分页表明系统正在使用大量的交换空间,或者说内存非常分散,大多数情况下都希望看到page in和page out的值为0 0
system:中断和上下文切换,这项统计只在比较基线时才有意义
命令用法
选项
dstat [-afv] [options..] [delay [count]]
-c:显示cpu信息;-C #,#,...,total
-d:显示disk相关信息;-D total,sda,sdb,...
-m:显示memory相关统计数据
-g:显示page相关统计数据
-n:显示network相关统计数据
-p:显示process相关统计数据
-r:显示io请求相关统计数据
-s:显示swapped相关统计数据
--top-cup:显示最占用cpu的进程
--top-io:显示最占用io的进程
--top-mem:显示最占用内存的进程
--top-latency:显示延迟最大的进程
--tcp --udp --unix --rwa --socket --ipc
saidar 查看CPU、进程、负载、内存、交换分区、网络、磁盘、文件系统等系统信息
这个命令是在博客中看到的,总结到这里供大家参考
管理进程
kill 向进程发送控制信号,以实现对进程管理;每个信号对应一个数字,信号名称以SIG(大小写不敏感)
显示当前系统可用信号:kill -l | trap -l
常用信号:man 7 SIGNAL
1)SIGHUP 不重启进程而让其重读配置文件
2)SIGINT 中止正在运行的进程;相当于ctrl+c
3)SIGQUIT 退出正在运行的进程;相当于ctrl+\
9)SIGKILL 强制中止(杀死)运行的进程
15)SIGTERM 正常中止运行的进程
18)SIGCONT 继续运行
19)SIGSTOP 后台休眠
指定信号的方法
1、信号的数字标识:1,2,9
2、信号的完整名称:SIGHUP
3、信号的简写:HUP,INT
kill 按PID发送信号
kill [-SIGNAL] pid ...
kill -n SIGNAL pid...
kill -s SIGNAL pid...
killall 按名称发信号
killall [-SIGNAL] comm...
pkill 按模式发送信号
pkill [options] pattern
-SIGNAL
-u uid:effective user,生效者
-U uid:real user,真正发起运行命令者
-t terminal:与指定终端相关的进程
-P pid:显示指定进程的子进程
注意:Linux系统各进程相关信息均保存在/proc/PID目录下的各文件中