内核的功用:进程管理,文件系统,网络功能,内存管理,驱动程序,安全功能
Process:运行中的程序的一个副本
Linux内核存储进程信息的固定格式task struct
多个任务的task struct 组件的链表 task list
进程创建:
Init(kernel创建)
父子关系
进程:都由其父进程创建
fork() clone()
进程优先级:
0-139
1-99:实时优先级(数字越大优先级越高)
100-139:静态优先级(用户可调度,数字小优先级越高)
nice值 -20,19
进程内存
Page Frame 叶框 存储页面数据
存储Page
MMU:Memory manager unit
IPC :inter process communication 进程间通信
如果在同一主机上
signal
shm: shared memeory
semerphor
不同主机上:
rpc:remote procecure call 远程过程调用
socket:
Linux内核:抢占式多任务
进程类型
守护进程:daemon,在系统引导过程中启动的进程,跟终端无关
前台进程:跟终端相关,通过终端启动的进程
进程状态:running
就绪态:ready
睡眠态:
可中断:interruptable
不可中断:uninterruptable
停止态:暂停于内存中,不会被调度,除非手动启动,stopped
僵死态:zombie
进程的分类:
CPU-Bound
IO-Bound (一般交互式的为IO密集型)
《Linux内核设计与实现》 《深入理解Linux内核》
Linux进程管理
pstree 显示
ps a 与终端无关进程
x与终端有关的进程
u以用户为中心组织进程状态信息显示
其中
ps aux
VSZ 虚拟内存集
RSS 常驻内存集
STAT 状态
R running
S 可中断睡眠
D 不可中断睡眠
T stopped
Z zombie
+ 前台进程
l 多线程进程
N 低优先级进程
< 高优先级进程
s session leader
START 启动时间
TIME 运行占据CPU的累计时长
COMMAND 那个命令运行的此进程
ps -e 显示所有进程
-f显示完整信息的进程信息
ps -ef
UID 属主
PID 进程号
PPID 父进程的进程号
C 运行在cpu相关编号
STIME 开始时间
ps -eFH 以进程层级格式显示进程相关信息
-F 显示完整格式的进程信息
-H 以层级格式显示进程相关信息
ps axZ 显示安全上下文
ps -U root
ps -eo pid,tid,class等
ps axo pid,psr,command |head
ni 优先级nice
pri 优先级
psr CPU processor
rtprio 实时优先级
pgrep,pkill
-U uid:有效用户
-u uid:实际用户
-t terminal:与指定终端相关的进程
-l 显示进程名
-a 显示完整格式的进程名
-P pid 显示父进程为此处指定的进程的进程列表
pidof 根据进程名获取pid
top命令
排序
P cpu百分比
M 内存百分比
T 累计占据cpu时长
首部信息显示:
uptime信息 l命令
tasks及CPU信息:t命令
cpu分别显示:l(数字)
memory信息: m命令
退出命令q
s:修改刷新时间间隔
终止指定进程:k
top -d # 指定刷新时间间隔,默认为3秒
-b 以批次方式
-n # 显示多少批次
补充性的工具htop
-d # 指定延时时间
-u username 仅显示指定用户的进程
-s COLOMN 以指定字段进行排序
s 跟踪选定进程的系统调用
l 显示选定进程打开的文件列表
a 将指定的进程绑定至某指定CPU核心
t 显示进程树
Linux基础
CPU timeslice
Memory 线性地址空间
I/O:
分时复用技术(基于时间切割)
vmstat 虚拟机的状态
procs
r 等待运行进程的个数
b 处于不可中断睡眠态的进程个数:(被阻塞的队列的长度)
memory
swpd 交换内存的使用总量
free 空闲物理内存总量
buffer 用于buffer的内存总量
cache 用于cache的内存总量
swap
si 数据进入swap中的数据速率(kb/s)
so 数据离开swap中的数据速率(kb/s)
io
bi 从块设备读入数据到系统的速率(kb/s)
bo 保存数据至块设备的速率
system
in interrupts 中断速率
cs context switch 进程切换速率
cpu
us
sy
id
wa
st
-s 显示内存的统计数据
pmap 报告进程内存内存
-x 显示详细格式的信息
另外一种实现
# cat /proc/PID/maps
glances命令
-b 以字节为单位,来显示网卡数据速率
-d 关闭磁盘IO模块
-f /path/to/smfile 设置输出文件的位置及其格式
-o {HTML|CSV} 输出格式
-m 禁用mount模块
-n 禁用网络模块
-t # 延迟时间间隔
-1 这里是(数字一)每个CPU相关数据单独显示
C/S模式下运行glances命令
服务模式
glances -s -B IPADDR
IPADDR指明监听于本机哪个地址
客户端模式
glances -c IPADDR
IPADDR 要连入的服务器端地址
dstat 是vmstat的替换工具,系统自带的工具,但是默认不安装
-c 显示cpu相关信息
-C #,#,...total 指定多个cpu
-d 显示disk相关信息
-D total,sda,sdb
-g 显示page相关
-m 与内存相关
-n 与网络相关
-p 与进程相关
-r 显示io请求相关
-s 显示swapped相关
--tcp
--udp
--raw
--socket 等于上面三个
--unix
--ipc 进程间通信的相关统计数据
--top-cpu 显示最占用CPU的进程
--top-io 最IO
--top-mem 最内存
--top-lantency 延迟最大的进程
kill命令
kill -l
man 7 signal
常用信号
1:sighup不用关进程而重读配置文件
2 sigint终止运行的进程 ctrl+c
9 sigkill杀死正在运行的进程
15 sigterm终止正在运行的进程
18 sigcont
19 sigstop
kill [-signal] pid
终止名称下的所有进程
killall -15 httpd
运行到后台,但是未必与终端无关
1 ctrl+z
2 COMMAND &
如果要剥离与终端的关系
nohup COMMAND &
jobs查看作业
作业控制
fg [[%]JOB_NUM] 默认调回带+的作业到前台
bg [[%]JOB_NUM] 让送往后台的作业在后台继续运行
kill [%JOB_NUM] 终止指定的作业
调整优先级
nice,renice
renice [-n] priority pid...
查看 ps axo pid,comm,ni
其余命令 sar tsar iostat iftop