在我们了解进程以后,我接下来要掌握进程的管理工具如:pstree , ps , pgrep , pidof , top ,htop , glance , pmap , vmstat , dstat , kill , pkill , uptime 等;Linux 系统各进程的相关信息均保存在/proc/PID 目录下的各文件中;
一,pstree
pstree:是以树状的形式来显示进程的关系;
pstree [option]
-p : 连进程编号一块显示出来;
-a : 显示每个程序的完整指令,包含路径,参数或是常驻服务的标示;
二,ps
ps:查看进程的信息和搜索进程;
ps [OPTION]...
支持三种类型选项的格式:
GUN 选项如--help ;
UNIX 选项(以一个“-“开头的选项)如-A -e:
选项:
-e: 显示所有进程
-f: 显示完整格式程序信息
-F: 显示更完整格式的进程信息
-H: 以进程层级格式显示进程相关信息
常用组合:-ef , -eFH
BSD 选项(直接用字母开头的)如a:
默认显示当前终端中的进程
a :显示所有终端中的进程
x :显示不链接终端的进程
u :显示进程所有者的信息
f :显示进程的父进程
l :长格式输出
o :属性… 选项显示定制的信息:
pid 、comm 、%cpu 、%mem 、state 、tty 、euser(执行用户) 、ruser(真正用户)
常用组合:aux,axl
常用组合:自定义:
-eo pid,tid,class,rtprio,ni,pri,psr,pcpu,stat,comm,等等
axo stat,euid,ruid,tty,tpgid,sess,pgrp,ppid,pid,pcpu,comm,等等
ps查看进程输出内容的解释:
USER | 用户名 |
UID | 用户ID(user ID) |
PID | 进程ID(Process ID) |
PPID | 父进程的进程ID(Parent Process id) |
SID | 会话ID(Session id) |
%CPU | 进程的CPU占用率 |
%MEM | 进程的内存占用率 |
VSZ | Virtual memory SiZe ,虚拟内存集,线性内存(虚拟内存的大小) |
RSS | ReSident Size, 常驻内存集(实际内存的大小) |
TTY | 与进程关联的终端 |
STAT | 进程状态 |
STAT | R :running(运行) |
S: interruptable sleeping(睡眠) | |
D: uninterruptable sleeping(不可中断) | |
I:空闲 | |
T: stopped(终止) | |
Z: zombie(僵死) | |
+: 前台进程 | |
l: 多线程进程 | |
N :低优先级进程 | |
<: 高优先级进程 | |
s: session leader ,会话(子进程)发起者 | |
START | 进程启动时间和日期 |
TIME | 进程使用的总CPU时间 |
COMMAND | 正在执行的命令行命令 |
NI | 优先级(Nice) |
PRI | 进程优先级编号(Priority) |
WCHAN | 进程正在睡眠的内核函数名;该函数的名称是从/root/system.map文件中获得的 |
FLAGS | 与进程相关的数字标识 |
pgrep:按预定义的模式搜索进程;
pgrep [options] pattern
-u uid: effective user ,真正有效者
-U uid: real user ,真正发起运行命令者
-t terminal: 与指定终端相关的进程
-l: 显示进程名
-a: 显示完整格式的进程名
-P pid: 显示指定进程的子进程
四,pidof
pidof:是Linux系统中用来查找正在运行进程的进程号
按确切的程序名称:/sbin/pido
如:pidof bash
五,top
top :动态的显示了系统的状况;
选项:
-d #: 指定刷新时间间隔,默认为3秒
-b: 以批次方式
-n #: 显示多少批次
有许多内置命令:
排序:
P :以占据的CPU 百分比,%CPU
M :占据内存百分比,%MEM
T :累积占据CPU 时长,TIME+
首部信息显示:
uptime 信息:l 命令
tasks 及cpu 信息:t 命令
cpu 分别显示:1 ( 数字)
memory 信息:m 命令
退出命令:q
修改刷新时间间隔:s
终止指定进程:k
保存文件:W(保存在 /root/.toprc)
top命令栏位信息简介:
第一行: 任务队列信息:
13:06:34 | 当前时间 |
up 55 min | 系统运行时间,格式为时:分 |
1 user | 当前登录用户数 |
load average: 0.00, 0.01, 0.05 | 系统负载,即任务队列的平均长度, 三个数值分别为 1分钟、5分钟、15分钟前到现在的平均值; |
第二行:进程的信息(Tasks):
Tasks: 363 total | 进程总数 |
2 running | 正在运行的进程数 |
361 sleeping | 睡眠的进程数 |
0 stopped | 停止的进程数 |
0 zombie | 僵尸进程数 |
第三行:CPU的信息 (%CPU(s)):
0.3 us | 用户空间占用CPU百分比 |
0.7 sy | 内核空间占用CPU百分比 |
0.0 ni | 用户进程空间内改变过优先级的进程占用CPU百分比 |
99.0 id | 空闲CPU百分比 |
0.0 wa | 等待输入输出的CPU时间百分比 |
0.0 hi | 硬中断 |
0.0 si | 软中断(模式切换) |
0.0 st | 虚拟机偷走的时间 |
第四行:内存信息(KiB Mem):
1001332 total | 物理内存总量 |
103192 used | 使用的物理内存总量 |
768632 free | 空闲内存总量 |
129508 buff/cache | 用作内核缓存的内存量 |
第五行:交换信息(KiB Swap):
4195320 total | 交换区总量 |
0 used | 使用的交换区总量 |
4195320 free | 空闲交换区总量 |
761356 avail | 缓冲的交换区总量。 内存中的内容被换出到交换区,而后又被换入到内存,但使用过的交换区尚未被覆盖, 该数值即为这些内容已存在于内存中的交换区的大小。相应的内存再次被换出时可不必再对交换区写入。 |
六,htop
htop 命令:(top的增强版)需从Fedora-EPEL 源安装:http://10.1.0.1/fedora-epel/7/x86_64/
选项:
-d #: 指定延迟时间;
-u UserName: 仅显示指定用户的进程;
-s COLUME: 以指定字段进行排序;
子命令:
s: 跟踪选定进程的系统调用;
l: 显示选定进程打开的文件列表;
a :将选定的进程绑定至某指定CPU 核心;
t: 显示进程树
七,vmstat
vmstat 命令:虚拟内存信息
vmstat [options] [delay [count]]
vmstat 2 5
procs | r | 等待运行的进程的个数,和核心数有关 |
b | 处于不可中断睡眠态的进程个数( 被阻塞的队列的长度) | |
memory | swpd | 交换内存的使用总量 |
free | 空闲物理内存总量 | |
buffer | 用于buffer 的内存总量 | |
cache | 用于cache 的内存总量 | |
swap | si | 从磁盘交换进内存的数据速率(kb/s) |
so | 从内存交换至磁盘的数据速率(kb/s) | |
io | bi | 从块设备读入数据到系统的速率(kb/s) |
bo | 保存数据至块设备的速率 | |
system | in | interrupts, 中断速率,包括时钟 |
cs | context switch, 进程切换速率 | |
cpu | us | Time spent running non-kernel code, 用户CPU时间 |
sy | Time spent running kernel code, 系统CPU时间 | |
id | Time spent idle, 空闲CPU时间 | |
wa | Time spent waiting for IO,等待IO CPU时间 | |
st | Time stolen from a virtual machine,虚拟机偷走的时间 |
选项:
-s: 显示内存的统计数据
八,pmap
pmap 命令 :进程对应的内存映射
pmap [options] pid [...]
-x: 显示详细格式的信息;
#pmap 1692
另外一种实现:
# cat /proc/1692/maps
九,glance
glances 命令:系统资源监控, (需从EPEL源中下载)
glances [-bdehmnrsvyz1] [-B bind] [-c server] [-C conffile] [-p port] [-P password] [--password] [-t refresh] [-f file] [-o output]
内建命令:
a | Sort processes automatically | b | Bytes or bits for network I/O |
c | Sort processes by CPU% | d | Show/hide disk I/O stats |
f | Show/hide file system stats | h | Show/hide this help screen |
i | Sort processes by I/O rate | l | Show/hide logs |
m | Sort processes by MEM% | n | Show/hide network stats |
p | Sort processes by name | q | Quit (Esc and Ctrl-C also work) |
s | Show/hide sensors stats | t | View network I/O as combination |
u | View cumulative network I/O | y | Show/hide hddtemp stats |
1 | Global CPU or per-CPU stats | mw | Delete warning logs |
常用选项:
-b: 以Byte 为单位显示网卡数据速率
-d: 关闭磁盘I/O 模块
-f /path/to/somefile: 设定输入文件位置
-o {HTML|CSV} :输出格式
-m: 禁用mount 模块
-n: 禁用网络模块
-t #: 延迟时间间隔
-1 :每个CPU 的相关数据单独显示
C/S 模式下运行glances 命令:
服务模式:
glances -s -B IPADDR
IPADDR: 指明监听的本机哪个地址
客户端模式:
glances -c IPADDR
IPADDR :要连入的服务器端地址
十,dstat
dstat 命令:系统资源统计
dstat [-afv] [options..] [delay [count]]
-c: 显示cpu 相关信息
-C #,#,...,total
-d: 显示disk 相关信息
-D total,sda,sdb,...
-g :显示page 相关统计数据
-m: 显示memory 相关统计数据
-n: 显示network 相关统计数据
-p: 显示process 相关统计数据
-r: 显示io 请求相关的统计数据
-s: 显示swapped 相关的统计数据
--tcp
--udp
--unix
--raw
--socket
--ipc
--top-cpu :显示最占用CPU 的进程
--top-io: 显示最占用io 的进程
--top-mem: 显示最占用内存的进程
--top-latency: 显示延迟最大的进程
十一,kill,pkill
kill 命令:
向进程发送控制信号,以实现对进程管理
显示当前系统可用信号: kill -l
常用信号:man 7 signal
1) SIGHUP: 无须关闭进程而让其重读配置文件
2) SIGINT: 中止正在运行的进程;相当于Ctrl+c
9) SIGKILL: 杀死正在运行的进程
15) SIGTERM :终止正在运行的进程
18) SIGCONT :继续运行
19) SIGSTOP :后台休眠
指定信号的方法:
(1) 信号的数字标识;1, 2, 9
(2) 信号完整名称;SIGHUP
(3) 信号的简写名称;HUP
进程管理工具
按PID :kill [-SIGNAL] pid …
按名称:killall [-SIGNAL] comm…
按模式:pkill [options] pattern
-SIGNAL
-u uid: effective user ,生效者
-U uid: real user ,真正发起运行命令者
-t terminal: 与指定终端相关的进程
-l: 显示进程名
-a: 显示完整格式的进程名
-P pid: 显示父进程为此处指定的进程的进程列表
十二,uptime
uptime:查看当前系统负载情况;
显示内容的信息:
显示当前时间,系统已启动的时间、当前上线人数,系统平均负载(1 、5 、10 分钟的平均负载,一般不会超过1) ;
系统平均负载:
指在特定时间间隔内运行队列中的平均进程数 。
如果每个CPU 内核的当前活动进程数不大于3的话,那么系统的性能良好。如果每个CPU 内核的任务数大于5,那么这台机器的性能有严重问题;
如果linux 主机是1个双核CPU 的话,当Load Average为6 的时候说明机器已经被充分使用了;