




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Linux程序设计环境CH06Linux内核之进程和文件共享内容回顾-1Shell脚本编程入门注释的含义test命令几个经典范例参数$#,$@,$0,$1… 内容回顾-2判断、循环、函数if-thencase-esacwhilefor函数function本章内容Linux内核中进程的基本概念进程管理作业管理Linux内核中的文件机制硬链接和符号链接进程的基本概念Onatimesharing(分时)systemwithonlyoneCPU: Multipleprocessesareexecutedsimultaneously(并发)byquicklyswitchingtheCPUfromoneprocesstoanotherTheshortCPUtime,thatisgiventoaprocessiscalledaquantum时间片(100msec)ThetechniqueusedbythekerneltochoosethenextprocessthatgetstheCPUiscalledCPUscheduling(cpu调度)CPUschedulingisimplementedinthekernel(内核)进程的基本概念CPUschedulingonatimesharingsystem:Apriorityvalue(优先数)isassignedtoeveryprocessTheprocesswiththehighestprioritytakestheCPUnextThesimplestschedulingalgorithmiscalledfirst-come-first-served(FCFS)AnotheralgorithmassignshighestprioritytotheI/OBoundprocesses(ProcessesthatspendmostoftheirtimedoingI/O.Ex:vieditor)RoundRobin(RR)AprocessgetstousetheCPUforonequantumandthentheCPUisgiventoanotherprocess,thenextprocessinthequeueofprocesseswaitingtousetheCPULinuxusesacombinationofthesealgorithms进程的基本概念
LINUX进程可以处于多种状态中的一种。进程可以从一种状态转变为另一种状态,直到执行结束(正常或者非正常终止)并退出系统。当进程完成它的工作并正常退出系统,进程就是正常终止。当进程是因为在异常(错误)条件下退出系统或者在其拥有者或特权用户的干涉下退出系统,它便是非正常终止。Linux2.4进程有5种状态;Linux2.6进程有7种状态。Linux进程状态Linux进程状态
TASK_RUNNING:进程在运行(是系统的当前进程)或者准备运行(等待被安排到系统的一个CPU上)。进程控制块有一个run_list成员,所有处于TASK_RUNNING状态的进程都通过该成员链在一起,称之为可运行队列。
TASK_INTERRUPTIBLE:进程处于某个等待队列中,它能够被信号(signal)或中断唤醒。等待资源的请求满足时,也被唤醒。
TASK_UNINTERRUPTIBLE:进程处于某个等待队列中,不能被信号或中断唤醒,只有等待的资源被满足时才被唤醒。例如当进程打开一个设备文件时,使用TASK_UNINTERRUPTIBLE
TASK_ZOMBIE:进程已经停止,但还没有释放进程控制块
TASK_STOPPED:可能是被特定的信号终止,也可能是受其它进程的跟踪调用而暂时将CPU交给跟踪它的进程。TASK_TRACED(2.6)TASK_DEAD(2.6)Shell命令的执行和进程
Shell命令可以是内部或者外部命令。
内部(内置)命令(internal(built-in)command)的代码本身就是shell进程的一部分。LINUXshell中的一些内部命令如.(点命令)、alias、bg、cd、continue、echo、exec、exit、fg、jobs、pwd、set、shift、test、time、umask、unset和wait。外部命令是(externalcommand)命令代码以文件的形式出现的称为;文件内容可以是二进制代码或者shell脚本。通常使用的一些外部命令如grep、more、cat、mkdir、rmdir、ls、sort、ftp、telnet、lp和ps。
LINUX进程通过系统调用fork创建另外一个进程,该操作建立原进程内存的完全拷贝。这两个进程接着fork后的语句执行。Theforkingprocessisknownastheparentprocess(父进程)
Thecreated(forked)processiscalledthe
childprocess(子进程)Shell命令的执行和进程bashshell创建一个进程Shell命令的执行和进程为了执行一个外部二进制命令,需要一种机制使子进程成为要执行的命令
LINUX系统调用exec完成这项工作,进程可以用另外一个命令的可执行代码来覆盖自身。
shell先后使用fork和exec系统调用来执行一个外部二进制命令。Shell命令的执行和进程Shell命令的执行和进程shell脚本的执行同二进制文件的执行略有不同。
Shell脚本的执行:
当前shell创建一个子shell并让子shell依次执行shell脚本中的命令,脚本中每一个命令的执行与从键盘输入的命令采用相同的方式子shell为每一个要执行的命令创建一个子进程。子shell执行脚本文件中的命令时,父shell等待子shell结束。当子shell遇到脚本文件的结束标志,它就终止。子shell的唯一目的是执行命令,eof意味着没有其它的命令了。当子shell终止,父shell结束等待状态,开始重新执行。Shell命令的执行和进程Linux进程属性进程包含以下属性:OwnersIDProcessnameProcessID(PID)ProcessstateParentprocessIDLenghtoftimetheprocesshasbeenrunning进程已执行的时间Linux进程属性ps命令用来查看系统中运行的进程的各种属性Linux进程属性使用范例Linux进程属性进程管理
top命令:实时监视CPU的活动状态。该命令显示系统中CPU密集型任务的状态并且允许你交互地控制这些进程。该命令按照CPU使用情况、内存使用情况和执行时间对进程进行排序。top命令执行时,可以用各种命令与之交互。当使用交互命令时,top提示你一个或者多个与它要完成的工作有关的问题。
kill命令:终止指定PID的进程。进程管理使用范例作业管理当键入命令并敲<Enter>后,shell执行命令在当前命令执行结束即shell返回前,你不能执行任何命令。这种执行命令的方式,称之为在前台foreground执行需要运行一个要花费很长时间才能完成的LINUX命令(或者任一这样的程序),当命令执行时,你无法做其它工作。
LINUX可以在执行命令的同时做其他工作。这种能力称为在后台background执行命令。
作业管理在命令后面加上一个“与”操作符号(&),使该命令在后台操作。当一个任务在后台运行时:前端shell命令行继续工作
可以继续执行其他shell命令作业管理允许用户执行一个命令而不需要等待前一个命令的完成。作业管理Example:$find/-namefoo–print>foo.paths2>/dev/null& [1]23467括号中shell返回的数字是该进程的作业号(jobnumber);另外一个数字是进程PID。
find命令的作业号是1,其PID为23467。
作业是一个不运行于前台的进程,并且只能在关联的终端上访问。这样的进程通常在后台执行或者成为被挂起的进程。作业管理fg命令可以使后台进程转到前台作业管理使用<Ctrl-Z>挂起一个前台进程。使用bg命令把被挂起的进程转到后台。使用jobs命令显示所有挂起的(停止的)和后台进程的作业号,确定哪一个是当前的进程。
命令suspend可以挂起当前shell进程作业管理范例作业管理范例作业管理范例命令和进程的终止按<Ctrl-C>来终止一个前台进程。终止后台进程可用两种方法中的一种:使用kill命令先使用fg命令把进程转向前台,然后按<Ctrl-C>。kill命令的主要目的是向进程发送信号(也称为软中断)。进程接收到信号后,可以采取以下三种行为之一:接受内核规定的默认动作忽略该信号截获该信号并且执行用户定义的动作命令和进程的终止为了终止一个忽略15号信号或者其它信号的进程,需要使用9号信号,即强制终止信号
进程号0可以指代所有在当前登录期间创建的进程。因此kill–90命令可以终止所有登录时产生的进程(即,当前会话中的所有进程),这样,你自己就不得不退出系统。
Linux进程的层次关系Linux启动进程创建过程Linux进程的层次关系
ps–ef命令或者pstree命令可以用图的形式显示当前系统中执行进程的进程树,勾勒出进程间的父子关系。
$pstree–a|more
Bashshell下可以用ulimit显示用户可以同时执行的最大进程个数$ulimit–u 4071#fedoracore4在TCshell下完成同样任务的命令是limit命令。
Linux文件共享方法通过副本共享:复制需要共享的文件并分发到组内每个成员
通过同一用户名登录共享:共用一个账号登录系统。
为共享文件设立适当的访问权限:把所有要共享的文件放到一个成员帐号下,设置组成员具有读写和执行的权限
为团队成员建立一个用户组建立一个新用户组只包括项目组的所有成员,每个用户用自己的账号登录,为自己的文件设立适当的访问权限,使得它们可以被组中的其他成员访问。
通过文件链接共享,Linux两类链接:
硬链接(hardlink)软(符号)链接(Soft/symboliclink)通过文件链接共享ln命令用来建立硬链接和符号链接。
语法:
ln[options]existing-filenew-file ln[options]existing-file-listdirectory 常用选项: -f强迫建立链接 -n
如果“new-file”已存在,不创建链接。
-s建立一个符号链接而不是硬链接 -d建立目录的硬链接 例:
$lnChapter3Chapter3.hard硬链接硬链接是一个指向文件索引节点的指针。
ln并不会影响文件的內容,它只是建立另一个文件名称而已
例:$ls-iltest12513974-rw-r--r--1rootroot556Jul1221:06test1$lntest1
test2$ls-iltest*2513974-rw-r--r--2rootroot556Jul1221:06test12513974-rw-r--r--2rootroot556Jul1221:06test2
建立新链接$lntest1test2
$cattest1WelcometoLinuxWorld$cattest2WelcometoLinuxWo
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论