已阅读5页,还剩48页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第六章进程与任务或作业管理 程序 进程 作业和任务的概念Linux操作系统的启动过程进程状态及转换进程调度 信号与软中断suid sgid和sticky属性进程调度命令作业和任务管理图形界面下的进程管理 6 1程序和进程的概念 操作系统的重要任务之一是使用户充分 有效地利用系统资源 也就是在系统资源一定或有限的情况下 要同时执行更多程序 高效率地完成更多的任务 进程 作业和任务调度是操作系统的重要任务之一 本章的主要内容是从系统的外部来观察系统中与进程 process 和作业 job 或任务 task 相关的行为 并实施某些控制让系统工作的更好 或按照用户的意图来完成指定工作 6 1 1程序 进程 作业和任务 程序 program 是一个存储在存储介质上的文件 进程 proccess 是一个程序的执行过程 作业 job 或任务 task 是用户需要计算机完成某项任务时要求计算机所做工作的集合 一个作业可能需要几个程序联合完成 作业和进程主要的区别与关系如下 作业是用户向计算机提交的任务实体 一个进程是作业或任务的某个执行过程 一个作业可由多个进程组成 6 1 2三类进程 前台进程 是指用户直接控制的用于完成某个任务的进程 因此也叫终端交互式进程 它从标准输入读数据 向标准输出写数据 将错误信息输出到标准错误 也可以是用户直接交互控制的完成某种功能的程序 后台进程是指在系统后台运行的 不与用户交互进程 前台的进程也可放在后台运行 这时可能要用到输入输出的重定向 守候进程也叫服务器或精灵进程 它是后台进程的一种 批处理进程是用户按照某种意图将一批作业和任务通过编程的方法提交给系统 让系统在某个合适的时间来调度和执行的进程 批处理进程是在某个shell程序的控制下解释执行的 6 1 3Linux操作系统的启动 Linux的启动是通过加电和系统自检后 将主引导程序MBR装入内存并把控制权交给它 在MBR的控制下装入Linux的引导程序LBR并把控制权交给它 在LBR的控制下系统继续引导 核心装入内存 系统开始进一步的初始化过程 首先初始化系统内部数据结构 比如构造空闲缓冲区 初始化区表结构 页表项等 然后将根文件系统安装到根 下 并创建系统的0 进程 设置它的运行环境 至此内核启动完成 接着继续创建1 进程 然后由1 进程做进一步的初始化工作 Linux操作系统的启动 续 1 进程继续初始化过程 按照 etc inittab文件的内容和规定启动服务 管理进程 为每个终端生成一个子进程 等待用户在终端上注册 至此启动过程完毕 6 1 40 进程与1 进程 在UNIX系统中0 进程是唯一只在核心态下执行的进程 它的功能有三 调度分配处理机 负责进程交换 初始化时创建1 进程 在Linux系统中 0 进程在创建出1 进程后 变成了空闲进程 Idler 当系统中没有其它进程就绪时运行 1 init 进程是系统启动时创建的创建进程的进程 它的主要作用是根据 etc inittab的内容创建系统运行所需的进程 系统初始化完成后 1 进程了变成回收进程 专门领养没有父进程的孤儿进程或回收状态为ZOMBIE的僵尸进程 Linux的进程树 0 进程创建了1 进程 它是1 进程的父进程 1 进程在系统启动过程中创建了系统所需要的其它进程 而子进程又可创建属于自己的子进程 因此除0 进程外 1 进程是其它所有进程的祖先进程 6 1 5进程及运行模式 在UNIX Linux系统中 进程可在用户态和核心态两种执行模式下执行 当用户进程需要系统核心提供服务而由用户态转向核心态执行时 需要依靠中断或陷阱机制来实现 这时要切换处理机 CPU 的工作状态 两种状态之间的主要区别是 核心态下的进程具有较高的优先级 能够存取核心和用户数据 而用户态下的进程能存取它自己的指令与数据 但不能存取核心指令和数据 6 1 6进程状态及转换 在操作系统中 一个CPU上同时只能运行一个进程 但在多用户 多任务环境下 从宏观上来讲 同时运行着很多进程 因此在这些正在运行着的进程中 在任一时刻只能有一个进程占有处理机而真正运行 也就是说众多运行着的进程中 它们宏观上是并行的 但微观上是串行的 因此就存在着有的进程在运行 有的进程在等待问题 事实上进程的状态远不只执行和等待两个 还有用户态执行 核心态执行 等待 睡眠 就绪等状态 UNIX系统的进程状态及转换 进程在用户态运行 进程在系统态运行 就绪状态 进程因等待资源而在内存中睡眠 进程在外存中睡眠 外存就绪 进程从系统态返回 进程刚被创建时的状态 僵尸状态 Linux系统的进程状态及转换 就绪状态 执行 浅度睡眠 深度睡眠 停止状态 僵尸状态 6 2UNIX Linux进程调度 UNIX Linux系统是分时系统 系统给每个进程分一个时间片 每个进程在自己的时间片内执行 当时间片结束时或从系统服务中返回时 动态计算进程的 优先级 若有优先级高于当前进程的内存就绪态进程时 系统设置调度标识 并在以后某个时刻剥夺当前进程的执行权 而让优先级高的进程执行 UNIX Linux的进程调度按时间片计算 优先级 并按 优先级 的高低来调度进程 使优先级高的进程占有处理机而得到执行 这里所说的 优先级 不是一个具体的数字或变量 而是一个衡量优先程度的指标 6 2 1调度策略与优先级的计算 Linux把所有进程分成两类 实时进程和普通进程 对普通进程采用时间片轮转法来调度进程的执行 所有就绪进程按先后排成队列 依次轮转 时间片用完而未完成任务者排在尾部 如此往复 对于实时进程则采用FIFO和时间片轮转进行调度 最后经调度模块综合计算出各进程的优先级 优先级最高者获得执行权 NiceLevel优先级 在优先级计算过程中有一个基本参数参与运算 这就是传统UNIX LinuxNiceLevel优先级 按传统做法 把它记为NICE 系统为每个进程设置了一个默认的NICE值 0 通过命令nice用户或管理员可以调整进程的NICE值 从而达到调整优先级的目的 在RedHatLinux9中它的调整范围为 20 19 在其它UNIX中 NICE取值范围可能与此不同 沿用UNIX的传统 NICE的值越大进程的优先级越低 NICE值可以被作为nice命令的参数来调试进程的优先级 6 2 2信号与软中断 Unix Linux中使用很多信号 用于进程通信与控制 进程通信时信号由主进程或系统或硬件等发送到目的进程 当目的进程收到信号后要进行相应的处理 若在目的进程在用户级执行 则收到信号后立即处理 若在内核级运行时 先将信号记下来 待返回到用户级时再处理 用户可以向目的进程发送信号 而实现一定程度的通讯 完成指定的工作或达到某种指定的目的 用户可以对收到的信号采取系统指定的办法进行处理 也可采取自己的办法进行处理 也可忽略信号 Linux系统的中断 Linux系统常用的中断信号可用命令kill killall和fuser来查询 如表6 1所示 在信号中 有的是硬件发出 比如SIGILL SIGSEGV等 有的是可屏蔽的 比如SIGHUP SIGQUIT等 而SIGKILL和SIGSTOP等是不可屏蔽 我们通常处理的只是一些软中断信号 6 3进程管理与调度命令 可执行文件的setuid和setgid属性可执行文件和目录的sticky属性查询进程状态 ps 按名称终止进程的执行 killall 确定使用指定文件或文件系统的进程 fuser 让进程抗终止运行 nohup 改变进程的优先级 nice 进程挂起或作业的前 后运行切换 6 3 1可执行文件的setuid和setgid属性 在UNIX Linux系统中 用户级别和执行权力是相关 但是有些工作 比如修改 etc passwd和 etc shadow文件等 对于普通用户都是必须的 因为它要修改密码 但是系统中这些文件对于普通用户是不允许有写操作的 于是就出现了普通用户通过某种机制行使超级用户权限的问题 1可执行文件的setuid和setgid属性 当一个程序具有suid属性时 它执行时的uid将是该程序所有者的uid 即有效uid 记为euid 而执行者的原来uid叫为真实uid 记为ruid 当一个程序具有sgid属性时 它执行时的gid将是该程序的gid 即有效gid 记为egid 而执行者的原来gid叫为真实gid 记为rgid suid sgid属性只对二进制可执行文件有效 对可执行的脚本文件无效 可执行文件的setuid和setgid属性 续 当一个属于超级用户的可执行二进制程序具有suid属性时 则当一般用户执行它时 也就相当于有了超级用户的身份和权限 同样当一个属于超级用户所在组的可执行二进制程序具有sgid属性时 则当一般用户执行它时 也就相当于有了该组员的身份和权限 suid和sgid权限的存在可能会给某些程序的执行带来了方便 因为权限被放大了 但这也是一种危险 因此设置这种权限的可执行二进制程序不宜太多 常用的设置suid的程序有 bin ping usr bin passwd usr bin newgrp usr bin sudo usr sbin suexec和 usr sbin traceroute setuid和setgid属性管理 按照文件的属性 若用八进制表示 对应于suid和sgid的权限则为4000和2000 setuid和setgid属性设置1 数字方法 chmod4755myp1 为myp1设置suidchmod2775myp2 为myp2设置sgidchmod6777myp3 为myp3同时设置suid和sgid2 字符方式chmodu smyp1 为myp1设置suidchmodg smyp2 为myp2设置sgidchmodug smyp3 为myp3同时设置suid和sgid修改后权限分别为 rwsr xr x rwxrwsr x和rwsrwsrwx 2 目录的sticky权限 UNIX Linux系统允许目录使用sticky位属性 粘着位 当一个目录设置了sticky位后 它内部的文件只能被文件主 目录主或超级用户删除 更名或移动 设置sticky位的目录有 tmp usr tmp和 var spool uucppublic等 在传统的UNIX系统中sticky对可执行文件还具有特殊意义 略 sticky权限管理 sticky位是对目录执行权来说的 它的属性值为1000 sticky位也可用chmod命令通过root用户来设置 设有目录mydir的权限为drwxr xr x 755 则可通过以下两种方法来设置它的sticky位 chmod1755mydir 数字方式chmod tmydir 字符方式 设置后的权限为drwxr xr t或1755 6 3 2进程管理与调度命令 1 查询进程状态 ps 功能 查询进程状态和信息 给出系统当前正在运行进程信息的快照 用法ps options 说明 ps支持多种UNIX系统格式的个性化显示方式 且参数较多 可以配合kill命令结束系统中失控或不必要的进程 ps参数 A e 显示系统内的所有进程 a 显示所有与终端相关的进程A 显示当前终端的所有进程 也包括其它用户进程 c 显示CLS和PRI栏 c 列出进程名 但不包含路径名 Cpname 显示进程名字为pname的同名进程信息 f 显示进程信息时显示带有路径的进程名和进程参数F 用ASCII字符显示树状结构的进程间关系g g Ggid 显示与进程组相关的信息 gid可以是组名或组号H 不显示标题 H 显示树状结构以表示进程间的关系J j 以作业控制方式显示进程信息 l l 以长格式显示进程信息L 显示标题栏目信息 p ppids 显示指定进程的信息T t ttty 显示终端相关进程信息 T只能用于显示当前终端进程信息u U Uuid 显示与用户相关的信息 uid可以是用户名或用户号 X 显示所有进程信息 不区分终端 进程的状态 R Runable 进程在执行中D Dlaying 非中断性睡眠 通常是因为等待I OS Sleep 正在睡眠T Tracedorstopped 被跟踪或停止 Z Zombie 僵尸状态 进程已经终止 但父进程没有对它的结束作适当处理W Wait 无内存页面 被换出 N 低优先级进程L Locked 页面被锁进内存 用于实时控制或用户控制的I O 高优先级进程 ps使用示例 查询与终端 tty1 相关的进程信息ps ttty1 查询与用户 gjshao 相关的信息ps f ugjshao 查询整个系统内的进程信息情况ps axj 按名称终止进程的执行 killall 功能 killall是另一个用来终止程序的命令 它不像kill使用进程的PID作为操作对象 而是使用进程名 用法 killall e g i q v w V ssignal name killall l说明 killall发送的信号可以是信号的名或值 由于在系统可能有同名进程运行 因此使用killall终止进程时可能会有扩大化的倾向 参数与示例 参数 name 进程名 被终止的对象 g 终止指定所属组内的所有进程 i 交互式工作 终止进程前需要用户确认 l 列可用信号 q 安静模式 当不存在指定进程时也不报错 s 指定信号 参见 l参数 v 报告信号是否发送成功 w 等待所有被杀进程结束 若被杀进程忽略发送信号或处于僵尸状态会造成killall无限等待示例 killall l 查询可用信号killallman 终止所有名为man的进程 3 确定使用指定文件或文件系统的进程 fuser 功能 确定使用指定文件或文件系统的进程用法 fuser a s nnamespace signal kimuv name fuser l说明 在fuser的默认输出中 进程号的后面可以跟有c e f r m等字符 意义如下 c 当前目录 e 进程正在执行 f 打开文件 默认情况下不输出此标志 r 根目录 m 内存映像文件或共享库 fuser的参数 参数 k 终止所有使用设备或文件系统的进程 i 在杀死进程前提示确认 若无 k则忽略此参数 l 列所使用的信号名 m 安装的文件系统 nnamespace 在指定名字空间内搜索 名字空间可是文件 UDP和TCP等 s 安静模式 u 显示用户信息 signal 指定信号 而非默认的SIGKILL 4 6 只搜索IP4 IP6的sockets信息 默认搜索两者 fuser使用示例 示例 1 杀死所有使用某设备 tty5 的进程fuser k dev tty52 显示使用本地网络端口的进程 监视本地telnet和ftp端口的tcp活动情况fusertelnet tcpftp tcp 监视本地telnet和ftp端口的tcp活动情况fuser u23 tcp21 tcp 监视本地ftp端口的tcp活动情况 fuser ntcp21 4 让进程抗终止运行 nohup 原理 在UNIX Linux环境下进程可在前台运行 也可在后台运行 但不论哪种情况 只要启动进程的用户退出了 他创建的所有进程都将终止 这是因为当用户退出时 它启动的所有进程都将收到HUP信号 按照系统规定 收到HUP信号的进程都将被终止 为了保证用户退出后 它启动的后台进程仍能继续运行 就要求进程对信号HUP具有免疫能力 功能 nohup启动的进程对信号HUP就具有免疫力用法 nohupcommand arguments nohup说明 后台进程是不能和终端交互的 如果被执行的命令的输出没有重定向 它将输出追加到当前目录的nohup out文件 如果当前目录的nohup out没有写权限 输出将被重定向到 HOME nohup out 如果两者均无写权限 则命令不能执行 如果有写权限且nohup不存在 则将创建之 在创建时不对同组和其它人赋访问权 若文件已经存在则不改变原文件的存取权限 程序的未重定向的标准错误也将追加到nohup out文件 nohup不能直接创建后台进程 创建后台进程应在回车前添加 符号 可以通过返回值来确定执行情况 126 命令不能执行 127 命令找不到 其它 所执行命令的返回值 5 改变进程的优先级 nice 功能 通过它可以改变进程NICE值 从而改变进程的优先级 用法 nice options cmd arg 参数 n 例如 n5 NICE 5 n 5 NICE 5 例如 5 NICE 5 5 NICE 5 adjustment 例如 adjustment 5 NICE 5 nice说明及示例 说明 对于哪些不急迫的任务 可以通过调高它的NICE值 来降低它的优先级 以保证紧急任务的执行 当不带参数或变量运行nice时 将显示默认的NICE 如果用nice对某个进程进行操作 而没有指定NICE 则将NICE设置为10 从而降低了优先级 如果要设置负的NICE 而提高进程的优先级 则要求用户必须具有超级用户权限 使用示例 nicemyp 以默认优先数 10 降低运行级nice 15myp 以15为优先数运行程序nice n 19myp 以 19为优先数运行程序ps l 查询进程运行级和NICE值 PRI和NI列 6 进程挂起或作业的前 后运行切换 当一个交互式进程正在运行时 用户可以通过Ctrl Z暂停其当前执行 而将它挂起 放在后台等待运行 也可让其在后台或再重新回到前台运行 实现这些功能的命令是fg和bg 还有jobs命令用于作业队列查询和管理 它们都是bash的内部命令 基本用法 fg job 让挂起进程到前台运行bg job 让挂起进程到后台运行jobs options job 显示作业队列 使用示例 设用户正在运行manbash 此时可以通过Ctrl Z将其挂起 屏幕显示以下信息并出现提示符 1 stoppedmanbash表明名为man的进程被挂起 作业编号为1 表示此为当前作业 用户可以在提示符下继续工作 再启动一个进程bc进入交互界面 同样可以通过Ctrl Z将bc挂起 2 stoppedbc系统回到提示符 运行jobs命令可得以下输出 1 stoppedmanbash 2 stoppedbc有两个作业 编号分别为1和2 2为当前作业 使用示例 续 此时可以通过命令 fg job 或bg job 将作业调到前台或放在后台运行 job为jobs命令列出的作业号 比如1 2等 例如输入fg或fg2将使bc调到前台执行 而输入fg1将使作业man调到前台执行 同样输入bg1也可使man命令在后台运行 此时系统提示 1 manbash 表明man命令已在后台运行 但是对于交互式任务在后台运行是没有意义的 6 4作业和任务调度 在UNIX Linux系统中除使用相关命令 可对正在运行的程序进行管理和控制外 还有相关命令用于对作业进行调度 以规定在指定时刻调度或安排任务的执行 我们可以把有些不急于处理的任务 放在系统的负载小的或非峰值时间执行 也可以让系统在无用户使用或用户最少的时候重新启动 以保证系统运行的效率 用于作业管理的命令有at batch和crontab 6 4 1at和batch 功能是在某指定时间调度命令的执行用法at V ffile qqueue mldbv timeat cjob batch V ffile qqueue mv time 参数batch是一个shell编写的程序 它通过at提交批处理作业 其用法与at相同 at和batch为作业提交的客户端程序 由at和batch提交的作业由atd调度执行 参数 cjob 将指定作业信息显示到标准输出 djob 删除指定作业 l 列出队列中的作业 ffile 从文件file中读取作业 而非从标准输入 也可以用输入改道的办法实现 m 作业完成后向用户发送邮件 在作业没有输出和错误时也是这样 qqueue 处理指定作业队列 在RedHatLinux9中以单个字符表示作业队列 默认情况是 a表示at队列 b表示batch队列 表示正在的作业 说明 at从标准输入上读入命令或从指定文件中读取命令并在以后指定的时间调度它们的执行 at可以接受HH MM或HHMM形式的时间 默认日期为当天 若在当天时间已过 则为下一天 时间还可以跟后缀AM和PM 否则将视为24小时制 也可设定today tomorrow midnight noon teatime 4pm 可同时指定时间和日期 日期必须跟在时间的后面 格式为 1 英文月名数字日期 数字年 2 MMDDYY 3 MM DD YY 4 DD MM YY 也可以 当前时间 依偏移量 的办法指定执行时间 偏移量可以是分钟 小时 天或周等 例如 now 2minutes 10 22 3days等 如果在作业操作中未使用I O重定向 则在作业执行过程中产生的标准错误和标准输出将以邮件的形式发给用户 etc at allow和 etc at deny 超级用户可以无条件使用at命令 对于一般用户能否使用at要根据文件 etc at allow和 etc at deny来确定 at allow at deny文件的结构为每行一个用户的列表 且不允许出现白空格 如果at allow存在 则其中的用户将被允许使用at 若at allow不存在 则检查at deny 其中的用户将不允许使用at 空的at deny意为每个用户均可使用at 如果at allow和at deny均不存在 则只有超级用户能使用at命令 相关的文件还有 var spool at和 var spool at spool 作业调试示例 1 作业创建at1200ls l tmp whoami a 进入at界面 输入命令at Ctrl D 输入Ctrl D结束作业输入at at显示此行内容 并覆盖Ctrl D所在的行 2 列出已提交的作业at l 3 删除已提交的作业at d2325 23 25为at l的输出中的作业号 6 4 2crontab at和batch提交的作业是一次性的 而crontab提交的作业可以是永久性的 当crontab被制定好之后 在下一次被修改之前crond将一直按其内容的规定调度程序的执行 crontab的功能是规划程序的定时启动 定时执行 crontab是一个客户端程序 用于编辑crontab文件 该文件中按一定格式规定程序的启动 crontab提交的任务由服务器程序crond调度 cron还有按时 日 周和月调试执行的任务 1 功能与用法 功能 规划程序的定时启动 定时执行用法 crontab uuser filecrontab uuser e l r 参数 file 指定crontab文件 e 编辑crontab文件 l 列crontab文件内容 r 删除crontab文件 uuser 指定用户的cr
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 医社保制度解读题集
- 企业人力资源招聘与配置优化方案
- C开发工程师企业级开发规范与标准总结
- IT技术支持工作流程与管理规范
- 公司年度项目立项计划与资源调配方案
- IT资产管理员岗位IT资产管理员技术发展趋势
- TPM联络员成本控制与效率提升方案
- 运输收款合同范本
- ESG沟通专员ESG沟通专员能力提升方案
- 樱桃采摘合同范本
- 邮政社招考试试题及答案
- 2025民宿装修合同
- 基于BIM技术的市政工程设计试题及答案
- 低钾血症诊疗与护理要点
- 《放射诊疗许可讲解》课件
- 椎间孔镜手术护理
- 诊所承包经营合同
- 2025年中国智能巡检机器人行业市场深度评估及投资战略规划报告
- 《学生平安保险业务培训》课件
- 2025年客房服务员(高级)客房服务员职业技能培训题库
- 第五届全国智能制造应用技术技能大赛决赛-理论知识题库
评论
0/150
提交评论