一.进程管理
进程类型:
守护进程,前台进程。
进程状态:
运行状态:running
就绪状态:ready
睡眠状态:
可终断:interruptabe
不可中断:uninterruptabe
停止状态: 暂停与内存,但不会被调度,除非手动启动
僵死状态:结束进程,父进程结束前 ,子进程不关闭
LRU:近期最少使用算法:
(1)例如有1 2 3 4四个进程首先程序在最近调用了一次4进程
(2)程序排序变化为4 1 2 3此时三排在最后将被删除4 1 2
(3)在接着如果2不被调度也会被删除,但是如果2被调度一次
(4)排序方式为2 4 1 随后1 进程会被删除。
ps显示当前进程状态的介绍:
BSD方式
a 所有用户在所有终端上运行的前台进程
x 当前用户运行的所有进程(包括前台进程和后台daemon)
ax 所有用户运行的所有进程
aux 所有用户运行的所有进程,结果中显示用户名
f 显示父子进程关系
-C 用进程名进行过滤
axo配合
o 自定义输出列
%cpu
%mem
pid
uid
gid
cmd
comm
tty 显示终端名,如为?,表示daemon后台进程
ruser 命令的发起人
euser 命令的真正执行人
state
R:running
S: interruptable sleeping
D: uninterruptable sleeping
T: stopped
Z: zombie
+: 前台进程
l: 多线程进程
L: 内存分页并带锁
N:低优先级进程
< :高优先级进程
S : session leader, 会话(子进程)发起者
例如: [email protected] rc5.d]# ps axo %cpu,%mem,pid,comm
[email protected] rc5.d]# ps axo %cpu,%mem,pid,comm k -%cpu
[[email protected] calhost rc5.d]# ps axo %cpu,%mem,pid,euser,ruser,comm k -%cpu |grep passwd 其中euser是命令的执行者 ruser命令的发起者
k 排序或--sort
echo $$ 显示当前运行进程的进程号
VSZ:虚拟内存集,线性内存 表示操作系统承诺内存集
RSS:常驻内存集 实际分配内存
UNIX方式:
-e 显示所有进程
-f 显示完整格式
-ef 以完整格式显示所有进程
-eF 以更完整格式显示所有进程
-efH 显示父子进程关系
-eo 自定义显示结果,如下
ps -eo %cpu,%mem,pid,nice,pri,stat,comm
二.进程搜索工具:
pgrep :
-u :UID/username 基于执行程序的用户名进行搜索
-l : 显示的结果中显示进程名 例如:[[email protected] ~]# pgrep -lu root
-t 终端名 : 指定终端相关的进程
-l : 显示进程名
-a : 显示完整格式的进程名
-p pid : 显示制定进程的子进程
Pidof 进程名 查询对应进程名的PID 例如:pidof ping 也可以用此命令帮助杀死进程:[[email protected] ~]# kill -9 $(pidof ping)
Uptime(cpu的信息) :
[[email protected] ~]# uptime
16:59:03 up 5:49, 3 users, load average: 0.07(一分钟内负载 ), 0.04(五分钟内负载), 0.05(十五分钟内负载)
通常当一天内负载不大于3表示cpu性能比较好
三.进程优先级
静态优先级:100-139
进程默认启动时的nice值为0,优先级为120. 只有根用户才能降低nice值。
Nice命令:
在执行nice命令前我们要先查出进程的进程号:ps -ef |grep ping
然后再更改nice值:renice -n -20 38650 即可
nice值:
-20~19
数字越小,优先级越高
renice -n # (-20~19) pid (进程如果处于活动状态用此命令)
nice -n #(-20~19) -# command
查看方式
ps axo ni[ce]
四.linux进程查看管理工具:
例如:vmstat 2 5 :每两秒刷新一次刷新五次停止
vmstat命令中各选项意思:
vmstat [操作][delay [count]]
procs
r;等待运行的进程的个数
b : 阻塞队列长度 ,即是处于不可中断睡眠态的进程个数
memory:
swpd:虚拟内存使用的总量
free:物力内存空闲总量 ,直至不够时,才会使用虚拟内存
buff:用于baffer的内存总量
cache: 用于cache的内存总量
swap
si:数据进入swap中的数据速率(kb/s)
so:数据离开swap中的数据速率
io
bi:从块设备读入数据到系统的速率(kb/s)
bo: 保存数据至块设备的速率
system
in:interrupts,中断速率
cs: context switch,进程切换速率
cpu:
us 用户空间占据比例
sy 内核空间占据cpu比例
id 空闲比率
wa 等待I/O完成所消耗的时间比例
st:被虚拟化偷走的时间比例
vmstat命令选项:
-s :显示内存的统计数
iostat
pmap pid
pmap -x pid
ls -l /proc/40052/fd |wc -l
通过查看进程文件描述符的数量是否增长来判断是否有内存泄露的问题
glances 命令:
c/s模式下运行glance命令
服务模式:
glances -s -B ip地址 :监听本机的某个地址
客户模式
glances -c 要连接的服务器ip地址 :不安全建议使用-p 或者换一个端口。
长用选项
-b :以Byte即字节为单位显示网卡数据速率;
-d :关闭磁盘I/O模块
-f /path/to/somefile: 设定输出文件位置
-o {html|CSV}:输出格式
-m :禁用mount模块
-n :禁用网络模块
-t # :延迟时间间隔
-1(数字) :每个cpu的相关数据单独显示;
dstat命令:
dstat [-avf] [options...] [delay[count]]
dstat -D total,sda 但都查看sda的信息
常用选项:
-c:显示cpu相关信息
-C #,#,...,total
-d : 显示disk相关信息
-D total,sda,sdb,...
-g:显示页面相关数据
-i:显示中断的统计数据
-l:1,5,15,数据信息
-m:显示memory相关统计信息
-n:显示network相关统计信息
-p:显示新建进程的统计数据
-r:I/O请求相关统计数据
-s : 交换内存相关统计数据
--tcp
--udp
--unix
--raw
--socket:相当于--tcp,--udp, --raw
--ipc :进程间通信的相关信息统计
--top-cpu:查看最消耗cpu的进程
--top-io:显示最占用io的进程
--top-mem :显示最占用内存的进程;
--top-lantency:显示延迟最大的进程
kill命令:
-0 无作为,可以用来单纯判断进程是否运行.
-1 -HUP:强制进程重读配置文件
-2 -INT: 中止正在运行的进程;相当于Ctrl+c
-3 -QUIT: 相当于ctrl+\
-9 -KILL: 强制杀死正在运行的进程
-15 -TERM: 终止正在运行的进程 (默认)\
killall 进程名
pkill
-u 用户名 杀死指定用户所运行的所有进程
pkill -t pts/1 杀死指定终端上运行的所有进程
五:linux的作业控制:
ctrl+z 将运行在前台的进程暂停 或 kill -19 PID
bg 将在当前终端上暂停的进程,放入后台继续运行 或kill -18 PID
fg 将在当前终端上暂停的或在当前终端上后台运行的进行,放入前台继续运行
jobs :查看当前终端所有作业
使进程不再依附于终端在后台运行
nohup command &> /dev/null
screen; command
(command&)
并行运行多条命令
三种方法
vim all.sh
sh1&
sh2&
shn&
(sh1&);(sh2&)
{sh1&sh2&sh3}