1 进程管理简介
进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础
2 常用命令
2.1 pstree
2.1.1 功能描述
树形结构展示进程树
2.1.2 命令的安装
首先确保你安装了psmisc.
[root@localhost ~]# yum install psmisc -y
2.1.3 命令使用语法
pstree [-a, --arguments] [-c, --compact] [-h, --highlight-all, -Hpid, --highlight-pid pid]
[-g] --show-pgids] [-l, --long] [-n, --numeric-sort] [-N, --ns-sortns [-p, --show-pids]
[-s, --show-parents] [-S, --ns-changes] [-u, --uid-changes] [-Z, --security-context]
[-A, --ascii, -G, --vt100, -U, --unicode] [pid, user]
pstree -V, --version
2.1.4 主要参数简介
选项:
-h:高亮显示当前的进程及其祖先
-H:高亮显示指定进程及其祖先
-p:显示进程的pid
-s:显示特定进程的直系进程
-u:指定用户
2.1.5 命令的使用样例
查看指定用户的进程信息带进程号
[root@localhost ~]# pstree -pu zhaojiedi1992
bash()─┬─vim()
└─vim()
查看当前进程的直系进程
[root@localhost ~]# pstree -ps $$ # $$就是当前进程号。
systemd()───sshd()───sshd()───bash()───pstree()
2.2 ps
2.2.1 功能描述
显示进程信息
2.2.2 命令使用语法
语法 ps [options]
这个命令比较特殊,支持了三种风格的命令使用
- Unix选项:使用1个-
- BSD选项:选项不使用-
- GNU长选项:选项使用2个-
我个人是对这个命令是习惯BSD风格的,也就是习惯使用ps aux 而不是ps -ef。 这个命令经常配合grep使用。
2.2.3 主要参数和栏位信息简介
参数:
a:列出终端相关的,如果想列出所有进程需要配合x
u:显示面向用户的格式
x:列出终端先关的,如果列出所有进程需要配合a
f :显示进程树,这个显示效果跟pstree的效果差远啦
k :根据指定指标去排序
--sort: 根据指定指标去排序,%cpu以cpu占用排序,-%cpu反序排
o :设置显示的列
L :显示支持的属性列表
-C :指定命令,多个命令用,分割
-L :显示线程
-u : 指定有效用户ID或名称
-U : 指定真正的用户ID或名称
-p : 显示指定pid进程
--pid :显示属于pid的子进程
--forest:树型显示
列:
USER :用户
PID:进程id
%CPU:cpu占用率
%MEM:内存占用率
VSZ:虚拟内存大小
RSS:真实内存大小
TTY:终端
STAT:状态
START:开始时间
TIME:占用cpu时间
COMMAND:命令
PRI:优先级
RTPRIO:实时优先级
PSR:当前进程对应的处理器
NI:进程的nice值
进程状态:
D:不可终端睡眠
R:运行或者在运行队列中
S:终端睡眠(等待一个时间完成)
T:被作业控制信号停止
t:被调试追踪停止
W:内存换页中
X:死亡了
Z:蜘蛛进程
<:高优先级的
N:第优先级的
L:有页面锁定在内存
s:是一个会话的领导者
l:是一个多线程
+:是一个前台进程
2.2.4 命令的使用样例
查看所有进程信息
[root@localhost ~]# ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 0.0 0.1 ? Ss : : /usr/lib/systemd/systemd --switched-roo
-------------------------------------下面的行省去了--------------------------------------------------------
查看所有进程的命令,进程id,cpu占用,内存占用信息 ,并按照cpu占用排序
[root@localhost ~]# ps axo cmd,pid,%cpu,%mem k %cpu
查看指定终端的进程
[root@localhost ~]# ps -t pts/
有效用户和真正用户的区别
[zhaojiedi1992@localhost ~]$ passwd # 在另一个终端上执行, 别修改,就让这个命令卡在这个界面
Changing password for user zhaojiedi1992.
Changing password for zhaojiedi1992.
(current) UNIX password: [root@localhost ~]# ps -u zhaojiedi1992 # 查看有效用户为zhaojiedi1992的进程
PID TTY TIME CMD
pts/ :: bash
pts/ :: vim
pts/ :: vim
[root@localhost ~]# ps -U zhaojiedi1992 # 查看真正用户为zhaojiedi1992的进程
PID TTY TIME CMD
pts/ :: bash
pts/ :: vim
pts/ :: vim
15749 pts/3 00:00:00 passwd
我们可以看出来,用户zhaojiedi1992使用了passwd这个命令,这个命令有suig的,运行的时候是以root运行的,所以在有效用户上查看没有passwd的,但是使用真正用户可以看到的
2.3 renice,nice,chrt
2.3.1 功能描述
- renice:调整优先级
- nice:指定优先级
- chrt:改变实时优先级
2.3.2 命令使用样例
[root@localhost ~]$ renice -n # 修改指定的进程的nice值
[root@localhost ~]$ nice -n - ping www.baidu.com # 在运行命令的时候就指定nice值
[zhaojiedi1992@localhost ~]$ chrt -p $$ # 调整实时优先级, 这个实时优先级不是想怎么该就怎么该的
chrt: unsupported priority value for the policy: : see --max for valid range
[zhaojiedi1992@localhost ~]$ chrt --max # 查看可以调整的范围
SCHED_OTHER min/max priority : /
SCHED_FIFO min/max priority : /
SCHED_RR min/max priority : /
SCHED_BATCH min/max priority : /
SCHED_IDLE min/max priority : /
SCHED_DEADLINE min/max priority : /
2.4 pgrep,pkill
2.4.1 功能描述
- pgrep:查找进程
- pkill:发送信号给进程,多数使用9信号
2.4.3 命令使用语法
pgrep [options] pattern
pkill [options] pattern
2.4.4 主要参数简介
选项
-u:生效者
-U:真正发起者
-t:指定终端
-l:显示进程名(pgrep可用)
-a:显示完整格式的进程名(pgrep可用)
-P:显示指定进程的子进程
2.4.5 命令使用样例
查看/dev/pts/3终端下的完整进程名,并全部杀掉他们
[root@localhost ~]# pgrep -t pts/ -a # 查看pts/4终端的完整进程信息
-bash
su - zhaojiedi1992
-bash
vim a.txt
[root@localhost ~]# pkill -t pts/4 # 杀掉pts/4终端的进程
2.5 pidof
2.5.1 功能描述
查找运行进程的pid
2.5.2命令使用样例
[root@localhost ~]# pidof bash
2.6 uptime
2.6.1 功能描述
获取系统运行时间和基础的负载信息
2.6.2命令使用样例
[root@localhost ~]# uptime
:: up :, users, load average: 0.00, 0.01, 0.05
2.6 top
2.6.1 功能描述
动态显示进程状态信息,ps是一个静态的
2.6.4 栏位信息简介
cpu相关:
us:用户空间运行时间(user space)
sy:内核空间运行时间(system )
ni:nice过的进程运行时间(nice)
id:空闲进程时间(idle)
wa:等待io时间(wait)
hi:硬中断(hardware interrupts)
si:软中断(software interrupts)
st:虚拟机偷走的时间(stolen time) 内存相关:
total:总内存
free:空闲内存
used:使用内存
buff/cache:buffer/cache内存
排序:
P:按照cpu占比排序
M:按照内存占比排序
T:按照占据cpu时间排序 首部信息显示:
l:uptime信息
t:tasks及其cpu信息
cpu分别显示:(数字)
m:内存信息显示 命令:
s:修改刷新间隔
k:终止指定进程
w:保存当前设置到~/.toprc文件,下次使用top采用这个设置
q:退出
2.6.5 命令使用样例
[root@localhost ~]# top
top - :: up :, users, load average: 0.00, 0.01, 0.05
Tasks: total, running, sleeping, stopped, zombie
%Cpu(s): 0.1 us, 0.0 sy, 0.0 ni, 99.9 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : total, free, used, buff/cache
KiB Swap: total, free, used. avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
root S 0.3 0.2 :02.42 vmtoolsd
root R 0.3 0.1 :00.13 top
root S 0.0 0.2 :08.91 systemd
root S 0.0 0.0 :00.07 kthreadd
root S 0.0 0.0 :00.02 ksoftirqd/
2.7 htop
2.7.1 功能描述
是一个加强版本的top命令,比较炫。
2.7.2 命令的安装
[root@localhost ~]# yum install htop -y # 安装htop,这个软件是在epel源中的。
2.7.4 主要参数简介
选项:
-d:指定延迟
-u:仅显示指定用户的进程
-s:以指定字段进行排序 子命令:
s:根据指定进程的系统调用
l:显示选定进程打开的文件列表
a:将选定的进程绑定到指定的cpu上
t:显示进程树 功能键:
F1:帮助
F2:设置
F3:查找
F4:过滤
F5:树显示
F6:排序
F7:减小nice
F8:增加nice
F9:kill进程
F10:退出,q也可以退出的
2.7.5 命令使用样例
[root@localhost yum.repos.d]# htop
效果图如下:
2.8 vmstat
2.8.1 功能描述
查看虚拟内存信息
2.8.2 命令使用语法
vmstat [options] [delay [count]]
delay:延迟
count:显示次数
2.8.4 主要栏位信息简介
Procs:
r:正在运行中或等待运行的进程数量
b: 不可终端睡眠的进程数量 Memory:
swpd: 交互内存的使用量
free: 空闲物理内存总量
buff: 用于buffer的内存总量
cache: 用于cache的内存总量
inact:非活动内存(配合-a)
active: 活动内存(配合-a)
Swap:
si: 从磁盘交互进内存的速率(kb/s)
so: 从内存进入磁盘交互的速率(kb/s) IO:
bi: 读取磁盘到系统的速率(kb/s)
bo: 系统写到磁盘的速率(kb/s) System:
in: 终端速率
cs: 上下文切换速率 CPU:
us:用户空间运行时间(user space)
sy:内核空间运行时间(system )
id:空闲进程时间(idle)
wa:等待io时间(wait)
st:虚拟机偷走的时间(stolen time)
2.8.5 命令使用样例
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
2.9 iostat
2.9.1 功能描述
查看io的信息
2.9.2 命令的安装
[root@localhost cd]# yum install systat
2.9.3 命令使用语法
iostat [ -c ] [ -d ] [ -h ] [ -k | -m ] [ -N ] [ -t ] [ -V ] [ -x ] [ -y ] [ -z ] [ -j { ID | LABEL | PATH | UUID | ... } ] [ [ -T ] -g group_name
] [ -p [ device [,...] | ALL ] ] [ device [...] | ALL ] [ interval [ count ] ] interval:时间间隔
count:显示次数
2.9.4 主要参数和栏位信息简介
选项:
-h:人类易读的格式显示单位
-p:显示分区的,而不仅仅是磁盘的
-x:扩展信息 cpu相关:
%user:用户级别的应用程序的cpu占比
%nice:调整过nice的应用程序的cpu占比
%system:系统级别的cpu占比
%iowait:io等待的cpu占比
%steal:别虚拟机偷取的cpu占比
%idle:空闲的(没有io请求的)cpu占比 设备相关:
tps:每秒的事务量
Blk_read/s:每秒的块读取速度
Blk_wrtn/s:每秒的块写入速度
Blk_read:读取的块大小合计
Blk_wrtn:写入的块大小合计
2.9.5 命令使用样例
[root@localhost cd]# iostat -x -d -p
Linux 3.10.-.el7.x86_64 (localhost) // _x86_64_ ( CPU) Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
sda 0.00 0.08 1.43 0.69 40.74 90.25 123.20 0.09 40.74 15.97 92.11 9.01 1.92
sda1 0.00 0.00 0.39 0.00 1.20 0.43 8.41 0.00 1.01 0.93 37.50 0.93 0.04
sda2 0.00 0.08 1.04 0.69 39.32 89.82 149.09 0.09 49.76 21.61 92.17 10.94 1.90
scd0 0.00 0.00 0.18 0.00 4.08 0.00 45.70 0.00 5.78 5.78 0.00 3.42 0.06
dm- 0.00 0.00 0.99 0.77 38.32 89.38 145.46 0.09 51.25 22.66 88.21 10.77 1.89
dm- 0.00 0.00 0.02 0.00 0.47 0.00 47.40 0.00 4.49 4.49 0.00 2.98 0.01
dm- 0.00 0.00 0.02 0.00 0.24 0.43 76.64 0.00 1.58 0.84 16.25 1.08 0.00
2.10 pmap
2.10.1 功能描述
报告指定进程的内存映射
2.10.2 命令使用语法
pmap [options] pid [...]
2.10.3 命令使用样例
[root@localhost cd]# pmap
: vim a.txt
2112K r-x-- vim
000000000080f000 4K r---- vim
00007f7199024000 2044K ----- libutil-2.17.so
00007f7199223000 4K r---- libutil-2.17.so
----------------------------中间信息跳过不显示了------------------------------------
total 148884K
2.11 glance
2.11.1 功能描述
一个跨平台的系统监控工具
2.11.2 命令的安装
[root@localhost cd]# yum install glances -y # 在epel yum 源
2.11.3 命令使用语法
glances [OPTIONS]
2.11.4 主要参数简介
选项:
-c:作为客户端
-s:作为服务端
-B指定绑定ip,默认是绑定所有ip
-p:指定端口,默认是61209
2.11.5 命令使用样例
在一台机器上
[root@localhost cd]# glances -s & #后台运行
[1] 2290
Glances server is running on 0.0.0.0:
在另外一个机器上
[root@localhost ~]# glances -c 192.168.1.101
效果图如下
2.12 dstat
2.12.1 功能描述
系统资源统计,用于代替vmstat,iostat的
2.12.2 命令的安装
[root@localhost ~]# yum install dstat -y
2.12.3 命令使用语法
dstat [-afv] [options..] [delay [count]] delay :延迟
count: 次数
2.12.4 主要参数简介
选项:
-c:显示cpu相关信息
-d:显示磁盘相关信息
-m:显示内存相关信息
-n:显示网络相关信息
-p:显示进程相关信息
-r:显示io请求相关信息
-s:显示swaped相关信息
--top-cpu:显示最占用cpu的进程
--top-mem:显示最占用内存的进程
2.12.5 命令使用样例
[root@localhost ~]# dstat -v
---procs--- ------memory-usage----- ---paging-- -dsk/total- ---system-- ----total-cpu-usage----
run blk new| used buff cach free| in out | read writ| int csw |usr sys idl wai hiq siq
0.4| 278M 3468k 420M 3234M| | 33k 69k| |
| 278M 3468k 420M 3234M| | | |
| 278M 3468k 420M 3234M| | | |
2.13 iotop
2.13.1 功能描述
类似top命令的io监控
2.13.2 命令的安装
[root@localhost ~]# yum install iotop -y
2.14 kill
2.14.1 功能描述
给指定进程发信号,大多数用于关闭进程
2.14.3 命令使用语法
kill [-s signal|-p] [-q sigval] [-a] [--] pid...
kill -l [signal]
2.14.4 主要参数简介
常用信号:
)用于测试进程是否存在
)SIGHUP:无需关闭进程让其重读配置文件
)SIGINT:中止正在运行的进程,相当于ctrl+c
) SIGQUIT:退出,相当于ctrl+\
) SIGKILL:强制杀死正在运行的进程
)SIGTERM:终止正在运行的进程
)SIGCONT:继续运行
)SIGSTOP:后台睡眠 指定信号方式:
数字方式,如1
信号完整名字,如SIGHUP
信号简写,如HUP
2.14.5 命令使用样例
查看进程是否存在
[root@localhost ~]# pidof vim # 查看指定进程的pid [root@localhost ~]# kill - 2245 # 发送0信号
[root@localhost ~]# echo $? # 如果结果为0代表进程存在,否则不存在
杀掉进程
[root@localhost ~]# kill -
杀掉所有httpd进程
[root@localhost ~]# killall httpd