Unix操作系统基础:Unix 进程
内容: 目标:
进程; 定义Unix系统的进程
进程的环境; 了解进程的生命周期、构成、状态等信息
进程是如何创建的; 了解如何显示进程的信息
如何获取进程信息; 了解父进程和子进程
如何终止进程的运行;
--------------------------------------------------------------------------------------
1.什么是进程:
Unix是一个多用户、多任务的系统。而且系统中可以有多个用户同时工作,每个用户又可以
同时完成几个任务。Unix是通过对进程的管理来管理用户和系统的各种命令和程序的运行的。
进程就是一项任务。一个正在系统中运行的程序就是一个进程。
一、进程监控
1. 进程及进程状态
进程和程序的主要区别是:
a.进程是动态的,它有自己的生命周期和不同状态;而程序是静态的,通常存放在某种介质上。
b.进程具有运行控制结构和作用数据区;程序没有。
c.一个程序可以同时在内存中有多个运行实例,即同时作为多个进程的组成部分。
进程的状态:(创建->运行->等待->运行...等待->运行->结束)(类似的生命周期)
a.运行态:进程正占用CPU和其它资源进行计算。
b.就绪态:进程已做好一切准备,等待获得CPU投入运行。
c.睡眠态:进程因等待输入输出或其它系统资源而让出CPU资源,等待运行条件的满足。
状态转换:(Unix系统中CPU按时间片分配,分给每个用户的时间都是非常短的)
#就绪态——(得到CPU)——>运行态
#睡眠态——(I/O完成或睡眠时间到)——>就绪态
#运行态——(等待I/O或调用Sleep)——>睡眠态
#运行态——(运行时间片到)——>就绪态
2.获取进程状态信息:
ps命令(无参时,显示该用户当前活动进程的基本信息)
PID 进程标识号(系统每个进程在其生命周期都有一个唯一的PID)
TTY 启动该进程的终端号
TIME 进程累计占用CPU的时间
COMMAND 产生该进程的命令
swapper(交互进程)
init(初始进程)(进程号为1)
sh(处于$系统提示符状态)
cron(定时启动进程)
getty(处于logging)
-e(-a) 显示系统中所有活动进程的信息
?表示系统后台进程
-f 显示该进程的所有信息
UID 进程所有者的用户标识数
PID 进程标识数
PPID 本进程的父进程标识数
C 进程调度参数,反映本进程使用CPU的状况
STIME 进程的启动时间
TTY 启动进程的终端
TIME 进程累计占用CPU的时间
COMMAND 启动该进程的命令名
3.暂停进程运行:sleep 命令
sleep time (使运行的进程暂停time指定的秒数.)
sleep 10;who (进程暂停10秒后,显示系统中登录的用户名)
4.终止进程运行: kill 命令
通常在三种情况下进程被终止运行.
a.进程运行完成,自动消亡;
b.用户按Ctrl+c或Del等中断键,强制终止前台进程的运行;
c.用户发出kill命令,可以强行终止或键盘锁住了的前台进程的运行.
kill 常用三种常用格式为:
kill PID #正常结束进程,完成善后工作,类似于按Del键.
kill -1 PID #先挂起该进程,终止子进程,
完成善后工作,终止该进程.
kill -9 PID #立即强行终止该进程,不作任何善后处理,
可能出现资源浪费和"孤儿"进程.
5. 进程的有关概念
a. 生存周期
在Unix系统中,所有进程都有其完整的生存周期。
生存周期是指创建进程开始到运行结束为止,在进程生存的这段时间内,
总要进行数据交换,CPU处理数据、存取内存和外设、及其它由程序规定的工作。
进程的生存周期不一样长,许多进程的生存周期很短,有的进程则要持续运行。
shell进程的生存周期:从用户登录开始到退出系统才消亡.
每个shell进程在其生存周期中要做:
a.印出提示符$
b.等待用户输入命令行
c.解释命令行
d.执行命令行中指定的命令
e.等待命令完成
f.印出新的提示符并重复以上过程
查看当前shell(正在运行的进程)的进程id,使用命令:$echo $$(这个进程id的值由内核随机分配)
6. 进程的环境
进程之间存在父子间的层次关系。
每个进程都是由某个已经存在的进程创建的(pid为0的除外),这个进程称为该进程的父进程。
由一个命令或程序启动的进程就是父进程,子进程是父进程的产物。
一个父进程可以有多个子进程,但一个子进程只有一个父进程。
当一个进程被创建的时候,它将从它的父进程那里继承许多重要的信息。
7. 父进程与子进程
进程id是进程的标识数,内核通过它来区分不同的进程。
系统启动的第一个进程,它的进程id为1.
PPID是父进程的标识数。
8. 控制进程
前台进程:从终端启动,并与终端进行交互的进程。
调用前台进程:只需在命令行中键入命令的名字即可。
后台进程:进程启动后,独立地运行(与启动它的终端不进行交互)。
调用后台进程:需要在命令行的末尾加上&符号。
进程可以在后台运行的充分必要条件是:
1.它不需要键盘的输入;
2.在调用命令启动它时,命令行的最后一个字符是&.
9. 中止进程
对前台进程可以用ctrl+c中断。
对后台进程必须使用kill命令中断。
根用户可以使用kill命令中止任何进程。如果非根用户,你只能中止自己启动的进程。
10. 监督进程(守护进程daemons)
是一个永远不会中止的进程。通常它用来控制系统资源的进程。
在系统启动时开始运行,直到系统关闭才中止。
常用的监督进程有corn,qdamemon(),errdaemon等.
在通信方面等还有一些其他的端口监督进程。