Linux系统进程管理
所谓进程是指当我们在启动一个程序之后,系统会产生一个进程并为该进程分配一个PID,即是进程号。linux在启动后会创建第一个进程init,随后所有子进程都将由其父进程创建。根据不同的系统类型系统可分为用户空间进程和内核空间进程。内核空间执行在CPU的环0,由内核进行控制和管理,如果用户空间用到内核空间的指令需向内核空间发起系统调用;用户空间执行在CPU环 3。
进程的类型:
1守护类进程:此类进程一般与终端无关是在系统启动过程中自动运行
2 前台进程:与终端相关,是由用户在终端中手动打开的进程
进程的优先级:linux进程优先级分为0-139,其中0-99是内核优先级由内核进行管理我们无法修改,100-139通过修改nice值进行调整,调整范围在-20至19,越小越优先
进程间通信:进程之间通信(IPC)如在同一台主机可通过信号(signal),共享内存(shm),semerphor(旗语)来完成,不同主机可依靠rpc(远程过程调用),socket来完成
进程的状态:
1. running运行态:正在运行中的进程
2. sleeping睡眠态:睡眠态又分为可中断睡眠和不可中断睡眠,可中断睡眠可以立即被CPU唤醒称为运行态,不可中断是由于等待IO操作完成无法继续执行
3. zombie僵尸态:进程已经死了等待父进程来销毁或者父进程也已经挂了
4. stopped停止态:不可被调度并运行
Linux进程管理主要命令:pstree,ps,vmstat,top,hop,glances,kill,dstat,bg,fg,job
1. pstree 显示进程数
[root@MiWiFi-R3-srv grub]# pstree
init─┬─NetworkManager─┬─dhclient
│└─{NetworkManager}
├─abrtd
├─acpid
├─atd
├─auditd───{auditd}
├─automount───4*[{automount}]
├─bonobo-activati───{bonobo-activat}
├─certmonger
├─console-kit-dae───63*[{console-kit-da}]
├─crond
├─cupsd
├─2*[dbus-daemon───{dbus-daemon}]
├─dbus-launch
├─devkit-power-da
├─gconfd-2
├─gdm-binary─┬─gdm-simple-slav─┬─Xorg
││ ├─gdm-session-wor
││ ├─gnome-session─┬─at-spi-registry
││ │ ├─gdm-simple-gree
││ │ ├─gnome-power-man
││ │ ├─metacity
││ │ ├─polkit-gnome-au
││ │ └─{gnome-session}
││ └─{gdm-simple-sla}
│└─{gdm-binary}
2. ps命令 显示相关进程信息
常用选项:
a:显示所有与终端相关的进程
x:显示所有与终端无关的进程
u:显示与用户相关的进程信息
-e:显示所有进程
-f:显示完成格式
-F:显示更为完整的格式
-H:显示进程层级结构
2.1 ps常用组合之aux
USERID:表示运行改进程的用户 PID:进程号 CPU:使用CPU的百分比 VSZ:虚拟内存集 RSS:常驻内存集 TTY:启动进程的终端 STAT: S:睡眠态 R:运行态 z:僵尸态 D:不可中断睡眠 T:停止态 N:低优先级 <:高优先级进程 +:前台进程 l:多线程 s:session leader START:进程触发时间 TIME:进程实际使用CPU时间
2.2 ps常用组合之-eF
可以看到C字段代表CPU的利用率,PSR字段表示是运行在哪颗CPU上
2.3 ps常用组合之axo
o表示自己定义需要显示的字段,常用的有:nice,pid,cpu,command,user,pri,stat,tty,vsz,ppid
3 top命令
top命令类似于Windows中的资源管理器,可以实时刷新系统中进程相关信息
常用选项:
d #:指定延迟时间间隔
u UserName:仅显示指定用户的进程
s COLUM:以指定字段进行排序
I :显示选定的进程打开的文件列表
a:将指定的进程绑定至指定的CPU核心
第一行分别表示系统运行时间,登录多少用户,Cpu平均负载
第二行表示总共的作业数量,多少个运行状态,睡眠状态,停止状态和僵死状态
第三行us代表用户空间占用CPU的百分比,sy代表系统内核空间占用百分比,ni代表跳转nice值用户进程空间内改变过优先级的进程占用CPU百分比,id表示空闲百分比,hi和si分别表示硬中断和软中断占用百分比,st代表此系统所被“偷走”的百分比
第四行和第五行分别表示物理内存和交互分区的使用情况
4 vmstat 命令
procs字段:
r:表示等待运行的进程个数,cpu等待运行的任务队列长度
b:表示不可中断睡眠的进程个数
memory字段:
swpd:交换分区使用率
free:可用空间
buff:用于buff的内存量
cache:用于cache的内存量
swap字段:
si:swap换入的速率(kb/s)
so:swap换出的速率 (kb/S)
IO字段:
bi:块设备写入的速率(kb/s)
bo:块设备读取的速率 (kb/S)
system:
in:中断速率,当进行IO操作时cpu中断正在执行的任务
cs:上下文切换,进程别内核调度的频率
cpu:
us:用户空间占用率
sy:内核空间占用率
id:CPU空闲率
wa:等待IO完成的比率
st:被虚拟化偷走的比率
4 dstat命令
dstat命令根据指定选项可以定时输出相关选项的内容,常用选项如下:
-c, --cpu:显示cpu相关信息
-d ,--disk:显示磁盘相关信息
-g :显示page相关的统计数据
-m:Memory的相关统计数据
-n:interface的相关统计数据
-p:显示process的相关统计数据
-r:显示io请求的相关统计数据
-s:显示swap的相关统计数据
--top-cpu:显示最暂用CPU的进程
--top-io:最占用io 的进程
--top-merm:最占用内存的进程
--top--lantency:延迟最大的进程