Linux进程与作业
操作系统的组成部分:硬件,kernel,lib, 系统调用-->调用kernel lib调用--> 库调用,kernel调用 运行用户代码-->用户模式-->用户空间; 运行kernel-->内核模式-->内核空间; 内核的功用:进程管理,文件系统,网络功能,内存管理,驱动程序,安全功能 CPU寄存器至保存当前状态的数据:------>找一个地方保存数据-->恢复数据: 进程-->Process:运行中的程序的一个副本; 同一个程序可以被创建并行的多个进程; 进程存在生命周期;-->进程是一个活体,有生命周期; task struct:任务结构体:内核存储进程信息的固定格式; 多个任务的task struct组件的链表;task list 进程创建: init是无法像内核调用特权指令,但是可以进行创建进程; 进程是由父进程创建:父子关系 fork(请求创建进程的调用接口;) clone(克隆自己的数据给子进程;) 任何进程销毁都是其父进程进行销毁; 进程优先级: 0-139: 0-99:实时优先级;-->数字越大优先级越高; 100-139:静态优先级;-->数字越小优先级越高; NICE值: -20,19程序的优雅值: Big O O(1),O(logn),O(n),O(n^2),O(2^n); 每个程序有2个队列:运行队列,过期队列; 程序运行优先级查看运行队列: 进程的task struct: 进程内存: 内核完成资源分配: 同一个命令,不同数据使用的内存也是不一样的; 将内存分割成一个个4k的页框存储页面数据; page frame:页框,存储页面数据; 每个进程的所占的内存有page frame组成;伪装成连续空间给进程; 以32位系统位列:每个进程运行时内核告诉进程有3G内存可用;-->虚拟内存-->线性地址空间; 真正分配的内存空间:物理地址空间:-->与先行地址空间是离散对应的; 内存为每个进程都保存了task stauct; MMU:Memory Management Unit内存管理单元; 缺页异常:访问数据,发现物理空间数据不在了; 常驻内存集:不能被交换 虚拟内存集:可以进行交换-->swap上 IPC:Inter Process Communication 进程与进程无法通信: 如需要通信:同一主机上; signal shm:shared memory 共享内存空间; semerphor 不同主机上: rpc:remote procecure call:远程过程调用; socket:基于套接通信; Linux内核:抢占式多任务:
进程类型:
守护进程:daemon;与终端无关,在系统引导过程中启动的进程; 前台进程:用户终端启动进程:与终端相关; 注意:也可把在前台启动进程送往后台,变为以守护模式运行; 进程状态: 运行态:running 就绪态或睡眠态:ready 睡眠态: 可中断睡眠:任意时间都可唤醒:interruptable 不可中断睡眠:uninterruptable 进程:指令+数据 一次IO是由分2段进行:磁盘加载内核内存,内核内存复制进程内存; 第二段:IO调用过程。 第一段: 停止态:暂停于内存中,但不会被调度,除非手动启动; 僵死态:zombie init:是负责收拾没有父进程的子进程; 进程的基本分类: CPU-Bound:CPU密集进程-->消耗更多的CPU 非交互式: IO-Bound:IO密集进程--> 交互式:
Linux进程查看及管理工具:
pstree工具:
** pstree - display a tree of processes**
**[root@wanghongkai ~]# pstree
init─┬─NetworkManager─┬─dhclient
│ └─{NetworkManager}
├─abrtd
├─acpid
├─atd
├─auditd───{auditd}
├─automount───4*[{automount}]
├─bonobo-activati───{bonobo-activat}
├─certmonger
ps:process state进程状态查看工具:
ps - report a snapshot of the current processes.
Linux系统各进程的相关信息均保存在/proc/PID目录下的各文件中;
支持2中风格:-或空
常用组合:aux
u:以用户为中心组织进程状态信息显示:
a:所有与终端相关的进程;
x:与终端无关的进程:
线程是进程的子单位
[root@wanghongkai ~]# ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.1 19352 1452 ? Ss 04:26 0:02 /sbin/init
root 2 0.0 0.0 0 0 ? S 04:26 0:00 [kthreadd]
USER:进程属主;
PID:进程ID;
cup:cpu百分比;
vsz:虚拟内存或线性内存集:
RSS:常驻内存集:不能放在交换分区的;
TTY:通过那个终端启动:
COMMAND:那个命令使用的:
STAT:进程状态:
R:runing
S:interruptable sleeping
D:uninterruptable sleeping
T:stopped
Z:zombie
+:前台进程
l:多线程进程
N:低优先级进程
<:高优先级进程
s:session leader
START:启动时间:
常用组个:-e
-e:显示所有进程
-f:显示完整的进程信息
常用组合:-eFH
-F:显示完整格式的进程信息
-H:以进程层级格式显示进程相关信息
[root@wanghongkai ~]# ps -F
UID PID PPID C SZ RSS PSR STIME TTY TIME CMD
root 20570 20566 0 27154 2044 0 19:41 pts/1 00:00:00 -bash
root 20744 20570 0 27560 1136 0 20:07 pts/1 00:00:00 ps -F
[root@wanghongkai ~]# ps -f
UID PID PPID C STIME TTY TIME CMD
root 20570 20566 0 19:41 pts/1 00:00:00 -bash
root 20746 20570 0 20:08 pts/1 00:00:00 ps -f
常用组合:-eo ,axo 自定义想查看进程;
ps -eo pid,tid,class,rtprio,ni,pri,psr,pcpu,stat,wchan:14,comm
ps axo stat,euid,ruid,tty,tpgid,sess,pgrp,ppid,pid,pcpu,comm
ps -eopid,tt,user,fname,tmout,f,wchan
ni:nice值
pri:priority,优先级
psr:processor,CPU
reprio:实时优先级
pgrep,pkill:进程显示的过滤:
pgrep [options] pattern
pkill [options] pattern -->杀死进程;
-U:实际用户
-u:有效用户
-t:与指定终端相关的进程
-l:显示进程名
-a:显示完整格式的进程名
-P pid:显示其父进程为此处指定的进程的进程列表
pidof:根据进程名获取其PID:
top:top:默认是根据CPU排序时时查看工具:
top - 20:24:31 up 15:58, 3 users, load average: 0.00, 0.00, 0.00
Tasks: 147 total, 1 running, 146 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 1020080k total, 934040k used, 86040k free, 89512k buffers
Swap: 2097148k total, 8k used, 2097140k free, 512508k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1 root 20 0 19352 1452 1132 S 0.0 0.1 0:02.96 init
2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd
3 root RT 0 0 0 0 S 0.0 0.0 0:00.00 migration/0
[root@wanghongkai ~]# uptime
20:27:50 up 16:01, 3 users, load average: 0.00, 0.00, 0.00
**常用选项**
排序:
P:以占据的CPU百分比:
M:整体上占据内存百分比:
T:累积占据CPU时长:
首部信息显示:
uptime信息:l命令
tasks及CPU信息:t命令
CPU分别显示:1
memory信息:m命令
q:退出
s:修改刷新时间间隔
k:杀出某个进程
选项:
-d:指定刷新时间间隔,默认是3秒
-b:批次显示,后跟-n #显示多少批次
htop:在epel源当中的提供:这里我用的是阿里云:我讲阿里云的eple源的镜像加载到我的yum源中:
[epel]
name=epel-6.0
baseurl=http://mirrors.aliyun.com/epel/6/x86_64/
gpgcheck=0
enabled=1
选项:
-d #: 指定延迟时间;
-u UserName: 仅显示指定用户的进程;
-s COLOMN: 以指定字段进行排序;
命令:
s: 跟踪选定进程的系统调用;
l: 显示选定进程打开的文件列表;
a:将选定的进程绑定至某指定CPU核心;
t: 显示进程树
原创文章,作者:wostop,如若转载,请注明出处:http://www.178linux.com/27331


评论列表(1条)
总结的很好,如果能对命令的显示结果有一些详解的解释就更好了