首页计算机计算机软件Unix&Linux教程 25 第25章 进程和作业控制.pptx

25 第25章 进程和作业控制.pptx

页数:63页文件大小:146.4 KB来源: Unix&Linux教程ppt课件

本课件讲解进程与作业控制:内核管理进程的方式、进程从分叉到死亡的过程、孤儿与废弃进程、init进程、前台与后台进程、作业控制的挂起与切换、ps与进程树、kill信号、优先级调整与守护进程。

第25章进程和作业控制封面,标示本章讲解的进程生命周期、作业控制与守护进程
本章需要解决的几个问题要点讲解,涵盖进程来源于何处、系统怎么管理进程、如何控制自己的进程等
26.1内核管理进程的方式要点讲解,涵盖进程、进程ID等
查看本课件的文字版(共 63 页,供检索与复制)

第1页:第25章进程和作业控制

本页为第25章进程和作业控制的章节封面,标示本章讲解的进程生命周期、作业控制与守护进程。

第2页:本章需要解决的几个问题

  • 进程来源于何处?
  • 系统怎么管理进程?
  • 如何控制自己的进程?

第3页:26.1内核管理进程的方式

  • 进程ID,或PID:内核赋予进程的唯一编号
  • 进程:加载到内存中准备运行的程序

第4页:26.1内核管理进程的方式:进程表

进程表
保存描述和管理进程所需信息的表
调度器
对进程的运行进行调度的程序

第5页:内核管理进程的方式:进程管理方式描述进程

  • 进程管理方式描述进程启动后,进入等待列表。在每个CPU时间片内,由调度器从等待列表中选择一个进程,给予这个进程在一个时间片内的运行机会。

第6页:26.2进程分叉到死亡

  • 进程管理
  • 进程间通信
  • 输入/输出
  • 安全和访问控制
  • 网络访问
  • 内核可以为进程提供的服务:-内存管理

第7页:进程分叉到死亡:进程访问内核的服务的

进程访问内核的服务的方式
-系统调用
常用的系统调用
-见下表

第8页:进程控制相关的系统调用

进程控制相关的系统调用:下表列出课件中的对应条目。

进程控制相关的系统调用
目的系统调用
创建当前进程的副本进程fork
等待另一个进程结束执行wait
在当前进程中执行一个新程序exec
终止当前进程exit
向进程发送信号kill
打开文件open
从文件中读取数据read
向文件中写入数据write
关闭文件close

第9页:进程分叉到死亡:shell进程-查看

  • shell进程-查看shell进程的PID:echo $$

第10页:进程分叉到死亡:shell进程

  • shell进程-shell进程中运行外部命令:1.调用fork,创建shell进程的一个副本进程,副本进程调用exec,执行外部命令的进程;2.父进程调用wait暂停自身运行,直到子进程运行结束,由内核唤醒;3.外部命令执行结束后,副本进程调用exit终止自身运行。

第11页:进程分叉到死亡:僵进程-进程死亡后

  • 僵进程-进程死亡后,被称为僵进程。-子进程称为僵进程后,内核唤醒父进程,父进程查看进程表中僵进程的条目,然后内核将僵进程条目删除

第12页:26.3孤儿进程和废弃进程

  • 孤儿进程-进程分叉后,意外死亡,只剩下子进程,此时子进程被称为孤儿进程。
  • 废弃进程-孤儿进程称为僵进程后,称为废弃进程。

第13页:孤儿进程和废弃进程:孤儿进程-进程分叉后

  • 孤儿进程-进程分叉后,意外死亡,只剩下子进程,此时子进程被称为孤儿进程。
  • 废弃进程-孤儿进程称为僵进程后,称为废弃进程。

第14页:孤儿进程和废弃进程:现代Unix系统对孤

  • 现代Unix系统对孤儿进程的处理-孤儿进程自动被#1进程(init进程)收养,在孤儿进程成为僵进程后,由#1进程进行清除。

第15页:26.4区分父进程和子进程

  • 利用fork的返回值区分父进程和子进程intret = fork();if(ret > 0)wait();elseexec(binfile);

第16页:26.5 #1子进程:init

  • 所有进程的父进程:#0进程-#0进程是内核直接创建的第一个进程,不是任何进程的子进程-#0进程在执行完部分初始化操作后,调用fork,创建#1进程,然后#0进程进入空闲运算,称为空闲进程-#0进程称为空闲进程后,没有进程运行时,就调用空闲进程。

第17页:#1子进程:init:第一个子进程

  • 第一个子进程:#1进程-#1进程执行设置内核和结束引导过程所需的剩余步骤,因此又称init进程-#1进程永远不会停止运行,一直到系统关闭

第18页:26.6前台进程和后台进程

  • 前台进程-当shell中输入一条新命令,需要等待当前命令进程结束时,称当前进程为前台进程
  • 后台进程-当shell中命令进程运行时,不会影响新命令的执行,称当前进程为后台进程

第19页:前台进程和后台进程:后台运行命令-

  • 后台运行命令-在shell命令后面加一个&例如:sort <bigfile> results &

第20页:前台进程和后台进程:后台进程如何操作标准

  • 后台进程如何操作标准输入输出-如果需要从stdin读取数据,要么无限期等待;要么使用fg命令将进程移至前台;-如果需要向stdout写入数据,则直接输出到stdout,但可能会打乱前台进程的输出。

第21页:26.7创建延迟

  • 命令:sleepsleepinterval[s|m|h|d]其中:interval:延迟的时长s|m|h|d:秒|分|时|天,默认是秒例如:sleep 5(延迟5秒)sleep 5m

第22页:26.8作业控制

  • 作业(job)-每条输入的命令,称为一个作业。每个作业由一个唯一的作业号来标识。

第23页:26.8作业控制

  • 作业(job)的操作含义操作显示作业列表jobs显示进程列表ps将作业移至前台fg将作业移至后台bg挂起当前shellsuspend挂起当前前台作业^Z向作业发送信号;默认发送终止信号kill

第24页:26.8作业控制

  • 作业(job)和进程的区别
  • 作业由shell控制,进程由内核控制
  • 作业指解释整个命令行所需的全部进程,进程只对应单独的命令例如:who | cut-c 1-8 | sort | uniq-cdate; who; uptime; cal 11 2012

第25页:26.9在后台运行作业

  • 后台运行作业-命令末尾加&例如:ls> temp &-shell会显示作业的作业号和进程号例如:[1] 4003如果是管道线,看到的是最后一个进程的PID-作业执行结束后,shell发出提示例如:[1] Donels> temp

第26页:26.10挂起作业

  • 后台运行
  • 暂停
  • 作业的3种状态:-前台运行
  • 暂停前台作业的方式:-按^Z,使作业中的进程挂起

第27页:26.10挂起作业:作业状态直接的切换

作业状态直接的切换
-前台运行->暂停按^Z,使作业中的进程挂起-暂停->前台运行执行fg命令

第28页:26.11挂起shell

  • 挂起shellsuspend[-f]其中:-f:强制挂起登录shell,默认不允许
  • 恢复shellfg

第29页:26.13显示作业列表

命令
jobsjobs[-l]其中:-l:长显示,显示进程ID、作业号、命令名(比正常显示多了进程ID)

第30页:26.13显示作业列表

  • 例子:$ jobs-l[1]2288 Stopped vim doc[2] 2290 Running make game >makeop&[3]-2291 Stopped less /etc/passwd[4]+ 2319 Stopped mancal

第31页:26.14将作业移至前台

命令
fgfg%[job]%[job]

第32页:将作业移至前台:指定作业的表达方式

  • 指定作业的表达方式:含义操作当前作业%当前作业%+前一个作业%-作业#n%n含有命令名name的作业%name命令中任意位置含有name作业%?name

第33页:26.14将作业移至前台

  • 例子:$fg/fg% /fg%+(将当前作业移至前台)$fg%-(将前一个作业移至前台)$fg%1$fg%make$fg%?game

第34页:26.15将作业移至后台

命令
bg[%job…]
将前台作业移至后台的过程
-按^Z,挂起当前作业;-运行bg,前挂起的作业移至后台继续运行。

第35页:26.17 ps程序:基本技能

  • 语法定义:UNIX:ps[-aefFly] [-ppid] [-uuserid]BSD:ps[ajluvx] [ppid] [uuserid]

第36页:ps程序:基本技能:UNIX选项

  • UNIX选项:含义选项与指定用户标识和终端相关的进程ps-ppid与指定终端相关的进程ps-uusrid与任何用户标识和终端相关的进程ps-a所有进程ps-e只显示守护进程ps-t-

第37页:ps程序:基本技能:显示哪些数据列

  • 显示哪些数据列:含义选项PID TTY TIME CMDpsUID PID PPID C TTY TIME CMDps-fUID PID PPID C SZ RSS STIME TTYTIME CMDps-FF S UID PID PPID C PRI NI ADDR SZWCHAN TTY TIME CMDps-lS UID PID PPID C PRI NI RSS SZWCHAN TTY TIME CMDps–ly

第38页:26.18 ps程序:选择选项

准则
满足要求,且输出量最少

第39页:26.19 ps程序:状态

状态列
UNIX:S列BSD:STAT列
显示状态列
UNIX:ps-l /ps-lyBSD:所有选项都显示STAT列

第40页:26.19 ps程序:状态:进程状态代码

进程状态代码
含义状态不可中断睡眠D空闲I正在运行或可运行R可中断睡眠S挂起T僵进程Z

第41页:26.19 ps程序:状态

  • 例子:ps-lyS UID PID PPID C PRI NI RSS SZ …S 500 8175 1879 0 75 0 464 112T 500 8885 8175 0 75 0 996 366R 500 9067 8175R 500 9069 8175

第42页:26.20监视系统进程

  • top命令:top[-ddelay] [-ncount] [-ppid[,pid]…]其中:delay:刷新间隔count:刷新的总时间量
  • ps命令的缺陷:-进程信息的静态快照,不能显示进程信息的动态变化

第43页:监视系统进程:top命令的显示结果

top命令的显示结果
-按CPU使用率排序-每行描述一个进程

第44页:26.21显示进程树

  • 命令:pstree[-aAcGnpu] [pid | userid]其中:-a:显示每个进程的命令行-A:使用ASCII字符绘制树-G:使用行绘制字符绘制树-c:扩展所有子树

第45页:26.21显示进程树:命令

  • 命令:pstree[-aAcGnpu] [pid | userid]其中:-u:显示子进程和父进程的userid不同时,所发生的改变-n:按PID排序-p:显示进程的PID

第46页:26.21显示进程树

  • 例子:$ pstreeinit-+-amp|-and|-crond|-2*[dbus-daemon---{dbus-daemon}]|-dbus-launch

第47页:26.22 fusr

功能
显示文件被哪个进程所使用
命令
fusrfile

第48页:26.22 fusr

  • 例子:$ find /-name foo–print > bar &[3] 3799$ fuser barbar: 3799

第49页:26.23杀死进程:kill

功能
在^C不起作用时,可以使用kill杀死进程
命令
kill[-9]pid…| jobid…其中:-9:发送“确定杀死”信号9

第50页:26.23杀死进程:kill

  • 例子:杀死进程$ kill 5505杀死作业:$ kill 2$ kill %-$ kill %make$ kill %?game

第51页:26.24向进程发送信号:kill

语法定义
kill[-signal]pid…| jobid…其中:-signal:发送的信号

第52页:向进程发送信号:kill

  • 查看所有可用信号kill-l不支持这个命令,可以查找signal.h文件,并显示其内容

第53页:向进程发送信号:kill

  • 常用信号含义缩写名称编号终止:注销或终端失去连接时发送给进程HUPSIGHUP1中断:按下^C时发送INTSIGINT2杀死:立即终止,进程不能捕获KILLSIGKILL9终止:请求终止,进程不能捕获TERMSIGTERM15继续:恢复挂起的进程,由fg和bg发送CONTSIGCONT18挂起:按下^Z时发送STOPSIGSTOP19

第54页:26.25设置进程的优先级:nice

  • 语法定义:nice[-nadjustment]command其中:adjustment:0~19的数值,值越高,优先级越低,默认是10对于超级用户,可以设为负值:-20~-1,提高优先级command:命令名

第55页:设置进程的优先级:nice

  • 使用nice的注意事项:-nice只能应用于自己独立的程序,对于内部命令、管道线或复合命令不能降低优先级;-只能对后台运行的程序降低优先级。

第56页:26.25设置进程的优先级:nice

例子
$ nice gcc myprogram.c &$ nice-n 19 calulate &

第57页:26.26改变进程的优先级:renice

  • 语法定义:reniceniceness-pprocessid其中:niceness:nice值processid:进程id

第58页:26.27守护进程

守护进程
没有控制终端的后台进程。
查看守护进程
ps-t-| less或ps–e | grep ‘?’ | less

第59页:常见守护进程(一)

常见守护进程(一):功能与进程名:下表列出课件中的对应条目。

常见守护进程(一):功能与进程名
功能进程名
所有其它进程的祖先,收养孤儿进程init
Apache Web服务器apache
at程序排列的作业atd
管理预调度作业的执行crond
打印调度器cupsd
动态配置TCP/IP信息dhcpd

第60页:常见守护进程(二)

常见守护进程(二):功能与进程名:下表列出课件中的对应条目。

常见守护进程(二):功能与进程名
功能进程名
FTP服务器ftpd
网关gated
Web服务器httpd
Internet服务inetd
内核模块加载或卸载kerneld
启动过程中检测硬件变化kudzu

第61页:常见守护进程(三)

常见守护进程(三):功能与进程名:下表列出课件中的对应条目。

常见守护进程(三):功能与进程名
功能进程名
打印队列lpd
MySQL数据库服务器mysql
DNS域名服务器named
网络文件访问nfsd
时间同步ntpd
远程过程调用rpcbind

第62页:常见守护进程(四)

常见守护进程(四):功能与进程名:下表列出课件中的对应条目。

常见守护进程(四):功能与进程名
功能进程名
路由信息管理routed
swapper的别名sched
SMTP服务器sendmail
Windows客户端文件共享与打印服务smbd
SSH连接sshd
将数据从内存复制到交换空间,回收内存swapper

第63页:常见守护进程(五)

常见守护进程(五):功能与进程名:下表列出课件中的对应条目。

常见守护进程(五):功能与进程名
功能进程名
文件系统与系统内存内容的同步syncd
收集各种系统消息syslogd
Internet服务xinetd
顶部目录