⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tlsa讲义05章.txt

📁 turbolinux的全部课件
💻 TXT
字号:

第五章 进程管理
        程序:指令的有序集合。
	进程:是正在执行的程序。并发执行。进程之间相互制约、相互依赖。提高了系统利用率。运行时有不同状态。
	

第五章 进程管理
        进程由程序代码、程序占用资源以及维持程序当前状态的信息组成。
	内核程序根据状态信息在所有进程间分配CPU时间片、内存、文件及I/O等资源,且可利用状态信息判断进程走向。
	

第五章 进程管理
        进程也称为任务。
	Linux是一种多任务操作系统,通过时间片轮转机制调度进程。
	进程转换可称为“上下文”切换。
	Linux执行强占多任务机制,可强制上下文切换
	

第五章 进程管理
        进程的状态信息存储在内核程序维护的进程控制块(PCB)中。所有的PCB存储在内核程序的进程表中。
	每个进程有一个唯一的进程ID(PID),通过PID唯一标识自身。
	init是系统最初始的进程,PID为1,所有其它进程都直接或间接产生自init进程
	

第五章 进程管理
        除init进程外的其它进程都记录了自身父进程的PID,即PPID。且继承了三个打开的文件stdin、stdout、stderr。
	线程是进程中指令的不同执行路线,它与属于同一进程的其他线程共享其代码段、数据段和其他操作系统资源。
	

5.1.1 创建进程
        程序每次执行通常都会创建新的进程
	可以用exec命令来请求在执行一个程序时不创建新的进程。通常,exec命令将用新的进程映像取代现有的进程映像。
	例如:exec vi
	通常此操作可用来替换shell,vi退出就直接退出shell了。
	

5.1.1 创建进程
        一般进程是派生出来的,是父进程的一个复制品,包括可执行代码、数据、环境、变量等。
	实际上父子共享同一段内存,直到有变化产生。copy-on-write,管理内存的有效途径。
	

5.1.2 监视进程
        进程控制块(PCB)中的重要信息
	进程ID(PID)
	父进程ID(PPID)
	实际用户和组ID(EUID和EGID)
	进程状态
	信号状态
	

5.1.2 监视进程
        PID是标识进程的唯一整形数,按数字次序分配,所以init的PID为1。Linux中PID上限为32767,超出后从1开始,且不和已存在的重复。
	查看进程及属性的命令ps
	

5.1.2 监视进程
        名称:ps 
使用权限:所有使用者 
使用方式:ps [options] [--help] 
说明:显示瞬间进程 (process) 的状态 

	选项有两套,有-和没有-的

5.1.2 监视进程
        参数: 
ps 的参数非常多, 在此仅列出几个常用的参数并大略介绍含义 
       -e或-A显示所有进程。 
  -f全格式。 
  -h不显示标题。 
  -l长格式。 
  -w宽输出。
	

5.1.2 监视进程
               a显示终端上的所有进程,包括其他用户的进程。 
  r只显示正在运行的进程。 
  x显示没有控制终端的进程。
	          u用户名格式 
       j 任务控制格式 
	最常用的三个参数是a 、 u 、x 

5.1.2 监视进程
        au(x) 输出格式 : 
USER:   进程拥有者 
PID:       进程ID 
%CPU:   占用的 CPU 使用率 
%MEM:   占用的内存使用率 
VSZ:    占用的虚拟内存大小 
RSS:    占用的内存大小 
TTY:    终端号码 

5.1.2 监视进程
        STAT:   进程的状态: 
        D:  不可中断的休眠态
	           R:  正在执行中 
        S:  休眠状态 
        T:  终止运行状态 
        Z:  僵尸状态 
       

5.1.2 监视进程
               W:  没有足够的内存分页可分配 
        <:  高优先级的进程 
        N:  低优先级的进程 
        L:  有内存分页分配并锁在内存内 (实时系统或 I/O) 
	START:  进程开始时间 
TIME:   执行的时间 
COMMAND:所执行的指令 

5.1.2 监视进程
        与ps相关的命令,w和who。显示在每个tty上已登陆的用户、登陆延续的时间,及其正在运行的程序
	最重要的系统监视工具top,该命令根据使用资源的次序列出正在运行的进程,默认情况下,每5秒刷新一次。默认是根据CPU占用的情况排序

5.1.2 监视进程
        top 
1.作用 
top命令用来显示执行中的程序进程,使用权限是所有用户。 
	2.格式 
top [-] [d delay] [q] [c] [S] [s] [i] [n]
	

5.1.2 监视进程
        3.主要参数 
d:指定更新的间隔,以秒计算。 
q:没有任何延迟的更新。如果使用者是超级用户,则top命令将会以最高的优先序执行。 
c:显示进程完整的路径与名称。 
S:累积模式,会将己完成或消失的子进程的CPU时间累积起来。 


5.1.2 监视进程
        s:安全模式。 
i:不显示任何闲置(Idle)或无用(Zombie)的进程。 
n:显示更新的次数,完成后将会退出top。
	

5.1.2 监视进程
        第一行表示的项目依次为当前时间、系统启动时间、当前系统登录用户数目、平均负载。
	第二行显示的是所有启动的进程、目前运行的、挂起(Sleeping)的和无用(Zombie)的进程。
	第三行显示的是目前CPU的使用情况,包括系统占用的比例、用户使用比例、闲置(Idle)比例。

5.1.2 监视进程
        第四行显示物理内存的使用情况,包括总的可以使用的内存、已用内存、空闲内存、缓冲区占用的内存。
	第五行显示交换分区使用情况,包括总的交换分区、使用的、空闲的和用于高速缓存的大小。
	第六行显示的项目最多,下面列出了详细解释。
	

5.1.2 监视进程
        PID(Process ID):进程标示号。 
USER:进程所有者的用户名。 
PR:进程的优先级别。 
NI:进程的优先级别数值。 
SIZE:进程大小。 
RSS:进程占用的物理内存值。 
SHARE:进程使用的共享内存值。 


5.1.2 监视进程
        STAT:进程的状态,S表示休眠,R表示正在运行,Z表示僵死状态等
%CPU:该进程占用的CPU使用率。 
%MEM:该进程占用的物理内存和总内存的百分比。 


5.1.2 监视进程
        TIME:该进程启动后占用的总的CPU时间。 
Command:进程启动的启动命令名称。

5.1.2 监视进程
        top命令使用过程中,还可以使用一些交互的命令来完成其它参数的功能。这些命令是通过快捷键启动的。 
<空格>:立刻刷新。 
P:根据CPU使用大小进行排序。 
T:根据时间、累计时间排序。 
q:退出top命令。 


5.1.2 监视进程
        m:切换显示内存信息。 
t:切换显示进程和CPU状态信息。 
c:切换显示命令名称和完整命令行。 
M:根据使用内存大小进行排序。 
W:将当前设置写入~/.toprc文件中。
	

第五章 进程管理(2)
        /proc文件系统。可以获取当前系统中正在运行的进程信息。
	以PID为目录名
	

5.1.3 管理进程
        优先级:内核通过优先级大小来判断何时及如何安排进程。
	静态值和动态值。静态值也称 niceness一般不会改变。动态值在实际运行时由内核来改变。
	我们通常讨论的优先级为静态优先级
	

5.1.3 管理进程
        优先级值的范围从-20到20。大部分进程的优先级为0。
	值越小优先级越高。
	改变优先级值可用nice命令
	

5.1.3 管理进程
        名称:nice 
使用权限:所有使用者 
使用方式:nice [-n adjustment] [-adjustment] [--adjustment=adjustment] [--help] [--version] [command [arg...]] 
说明:以更改过的优先级值来执行程序, 如果未指定程序, 则会打印出当前的进程优先级值
	

5.1.3 管理进程
        例如:nice  –n  x  top或
	             nice  -x  top
	
	默认的 调节值为 10
	x范围为 -20 (最高优先序) 到 19 (最低优先序)

5.1.3 管理进程
        名称:renice 
使用权限:所有使用者 
使用方式:renice priority [[-p] pid ...] [[-g] pgrp ...] [[-u] user ...] 
说明:重新指定一个进程的优先级值

5.1.3 管理进程
        nice和renice不同
	   [1]  nice要求指定优先级的变化量,      
	           renice要求指定最终的优先级值
	   [2]  nice要求数值之前用-,renice不要 

5.1.3 管理进程
        后台进程&,显示任务号和进程号
	命令jobs可查看正在运行的任务
	后台任务完成会显示完成信息。
	使用fg命令可将后台程序移至前台
	也可通过CONTROL+z挂起前台任务,然后用bg命令将挂起的任务移到后台
	

5.1.3 管理进程
        通常退出shell时,相应的进程都会终结
	   可使用nohup命令使程序在用户退出后继续运行。
	   nohup命令的进程会将其输出加在当前目录下名为nohup.out的文件中
	

5.2 信号
        进程之间通讯通过信号来实现,内核可通过信号来控制进程
	信号是在软件层次上对中断机制的一种模拟,在原理上,一个进程收到一个信号与处理器收到一个中断请求可以说是一样的。信号是异步的,一个进程不必通过任何操作来等待信号的到达,事实上,进程也不知道信号到底什么时候到达
	

5.2 信号
        信号是进程间通信机制中唯一的异步通信机制,可以看作是异步通知,通知接收信号的进程有哪些事情发生了。
	信号事件的发生有两个来源:硬件来源(比如我们按下了键盘或者其它硬件故障);软件来源,最常用发送信号的系统函数是kill等函数,软件来源还包括一些非法运算等操作。

5.2 信号
        信号的完整列表kill –l

5.2 信号
        可以通过stty  –a命令查看信号所对应的按键。只有INTR、QUIT和SUSP字符属于信号,而其他属于终端函数。
	Linux进程间通讯的途径之一是信号。利用信号来中断进程的执行是一种高级的方法。
	可用kill命令来向进程发信号
	

5.2 信号
        名称:kill 
使用权限:所有使用者 
使用方式: 
kill [ -s signal] pid ... 
kill -l [ signal ] 
说明:kill 送出一个特定的信号 (signal) 给进程, id 为 pid 的进程根据该信号而做特定的动作, 若没有指定, 默认是送出终止 (TERM) 的信号 

5.2 信号
        -s (signal) : 其中可用的讯号有 HUP (1), KILL (9), TERM (15), 分别代表重新启动, 杀死, 终止; 详细的信号可以用 kill -l 查看。
-l (signal) : 列出所有可用的信号名称 
范例: 
将 pid 为 816 的进程砍掉 (kill) : 
kill -9 816
将 pid 为 817 的进程重启 (restart) : 
kill -HUP 817 

5.3 DAEMON
        支持系统服务的进程。守护进程。系统引导时就启动,在系统关闭时终止。一般没有控制终端,在后台运行,提供特定的服务。
	守护进程的程序命名通常在最后加一个 “d”。 named, httpd,lpd。这只是一种惯例,不是标准或硬性规定。 例如,为Sendmail而应用的主要mail守护进程就叫sendmail,却不叫maild。
	

5.3 DAEMON
        Daemon一般会等待某个事件,如信号、创建文件、超时或从网络输入数据等,当时间发生,daemon被唤醒去服务。一般会派生一个子进程去处理事件。
	查看daemon或其他没有控制终端的进程可用命令ps  –t   
	

5.4 内存
        Linux使用虚拟内存系统,分页虚拟内存管理。
	free命令的功能是查看当前系统内存的使用情况,它显示系统中剩余及已用的物理内存和交换内存,以及共享内存和被核心使用的缓冲区。
	
	

5.4 内存
        该命令的一般格式为: free [-b | -k | -m] 命令中各选项的含义如下:
	   -b 以字节为单位显示。 
	   -k 以K字节为单位显示。 
	   -m 以兆字节为单位显示。
	
	默认为以K字节显示

5.4 内存
        vmstat命令显示虚拟内存系统相关的统计信息,包括进程、内存、交换分区、输入输出、系统中断和CPU等情况。
	memstat(有些系统上没有),报告所使用的虚拟内存数量的同时还会返回正在运行的进程、共享库及所有的虚拟内存。

5.4 内存
        core文件:在UNIX下调试程序,如果遇到内存溢出等问题的时候,经常在当前目录下出现这样一个文件:core
	core是一个很大的文件,动辄上百M,很是耗费硬盘空间,其实core中放置的是执行进程的内存映像,其中的提示信息core dump就是信息转储的意思,在调试一个有问题的程序时它经常是很起作用的。
	

5.4 内存
        core文件之所以这么大,是因为它包括了所有用来调试的信息:堆栈,数据,代码指针等等,无所不包,除了程序的动态状态。
	

5.4 内存
        ulimit
	用途:设置或报告用户资源极限
	-a列出所有当前资源极限。
	-c以 512 字节块为单位,指定核心转储的大小。
	-d以 K 字节为单位指定数据区域的大小。
	-f使用 Limit 参数时设定文件大小极限(以块计),或者在未指定参数时报告文件大小极限。缺省值为 -f 标志。

5.4 内存
        -m以 K 字节为单位指定物理存储器的大小。
	-n指定一个进程可以拥有的文件描述符的数量的极限。
	-s以 K 字节为单位指定堆栈的大小。
	-p管道大小
	-u进程数的上限

5.4 内存
        -t指定每个进程所使用的秒数
	-v虚拟内存的上限
	
	例如:要将文件大小极限设置为 51,200 字节,输入:
	ulimit -f 100
	
	

5.5 启用进程统计
        启用进程统计。内核是进程统计全部信息的来源。
	内核一旦支持进程统计,就可以安装进程统计软件psacct。
	日志文件/var/log/pacct或者/var/adm/pacct
	

5.5.2 查看日志信息
        开启了进程统计,就能查看它收集的所有信息。
	ac 命令
	用途:打印连接时间记录。
	连接时间记录由 init 和 login 程序创建,并收集在 /var/log/wtmp 文件中(如果该文件存在)。

5.5.2 查看日志信息
        ac无参数为所有时间总和
	-p 为每个用户的
	-d 为每天的
	单位为小时。如果一个用户一次登陆多个终端,每个终端都会增加时间

5.5.2 查看日志信息
        名令:last 
使用权限:所有使用者 
显示用户登录和退出的具体时间和开机的情况

	-num 展示前 num 个 
username 展示 username 的登入讯息 
tty 限制登入讯息包含终端机代号 

	

5.5.2 查看日志信息
        Lastcomm命令
	lastcomm 命令以逆向时间顺序显示关于仍记录在 /var/log/pacct 目录下的摘要文件中的先前执行的命令的信息。
	lastcomm 命令的使用需要先启用进程统计功能,
	#/usr/sbin/accton    /var/log/pacct

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -