菜鸟学Linux 第032篇笔记 进程管理



cpu

MMU memory management unit


Memory

线性内存

物理内存


用户空间

内核空间

内核数据结构

task structure

PPID

PID

Context Switch 上下文件切换


进程所占内存空间大小

VSZ virtual size

RSS Resident size


并行编程模型

多进程模型

单进程多线程模型

process

thread

Uninterruptible sleep 不可中断睡眠 

interruptible sleep 可中断睡眠

进程状态

父子关系

kernel God

init God创建的第一个进程

优先级关系

0-139 140

0-99 kernel modify

100-139 user modify

nice 值 -20~19 对应100~139

1.获得更多的cpu运行时间

2.更优先获得运行的机会

普通用户仅能够调大自己进程的Nice值

root随意

ls /proc 里的数字为进程号

init 进程号永远为1   其它进程都为init的子进程

O

o(1)

o(n)

o(logn)

o(n^2)

O(2^n)

进程的分类:

跟终端相关的进程

跟终端无关的进程

进程状态

D 不可中断的睡眠

R 运行或就绪

S 可中断的睡眠

T 停止

Z 僵死

< 高优先级进程

N 低优先级进程

+ 前台进程组中的进程

l 多线程进程

s 会话进程首进程

[]加中括号的进程表示内核线程



进程间通信(IPC Inter Process Communication)

共享内存

信号:signal

semaphore 旗语

/proc/memoinfo memory infomation

/proc/cpuinfo cpu information

Command

ps process state

SysV风格:-

-elf

-ef

-eF

-o 指定显示字段

BSD风格:

a 所有与终端有关的进程

u

x 所有与终端无关的进程

pstree 显示进程树display a tree of processes

pgrep progress grep

pidof find the process ID of a running program.

vmstat Report virtual memory statistics

free Display amount of free and used memory in the system

kill terminate(终止,结束) a process

pkill look up or signal processes based on name and other attributes

bg backgroupd jobs

fg frontground jobs

uptime Tell how long the system has been running.


top 按键

M 根据驻留内存大小进行排序

P 根据CPU使用百分比进行排序(默认)

T 根据累计时间进行排序

1 显示CPU的多个核心

l 是否显示平均负载和启动时间

t 是否显示进程和CPU状态相关信息

m 是否显示内存相关信息

c 是否显示完整的命令行信息

q 退出top

k 终止某个进程

top option

-d 指定延迟时长,单位是秒

-b 批模式

-n # 在批模式下,一共显示多少批

kill 重要的信号

1 SIGHUP 让一个进程不用重启,就可以重读配置文件,并让新的配置信息生效

2 SIGINT Ctrl+C 中断进程

9 SIGKILL 杀死一个进程(强型杀死)

15 SIGTERM 杀死一个进程(友好杀死)默认为此

指定一个信号

信号号码 kill -1

信号名称 kill -SIGKILL

信号简写 kill -KILL

e.g. kill 13381(此为PID)

killall COMMAND(此为进程名)


调整进程nice值

已启动的进程

renice (alter priority of running processes)

renice NI PID

在启动时指定nice值

nice (run a program with modified scheduling priority)

nice -n NI COMMAND

前台作业:占据了命令提示

后台作业:启动之后,释放命令提示符,后续操作在后台完成

前后台切换

前-->后

Ctrl+z 把正在前台的作业送往后台

COMMAND & 让命令在后台执行

bg 让后台的停止作业继续运行

bg [%JOBID]

jobs 查看后台的所有作业

作业号,不同于进程号

+ 命令将默认操作的作业

- 命令将第二个默认操作的作业

后-->前

fg 将后台的作业调回前台

fg [%JOBID]

kill %JOBID 终止某作业

vmstat 系统状态查看命令

格式

process

r 运行队列长度

b 阻塞队列长度

memory

swpd 交换内存的已用空间

free 空闲的内存

buff 用于缓冲

cache 用于缓存

swap 物理内存<->交换内存

si swap in

so swap out

io 物理内存<->硬盘

bi blocks in

bo blocks out

system 内核空间

in interrupt 中继次数

cs context switch 上下文件交换次数

cpu

us user空间所占cpu的百分比

sy system空间所占cpu的百分比

id idle cpu空闲百分比

wa wait IO

st stolen