项目四LinuxShell程序设计.ppt

上传人:sh****n 文档编号:8069569 上传时间:2020-03-27 格式:PPT 页数:42 大小:398.84KB
返回 下载 相关 举报
项目四LinuxShell程序设计.ppt_第1页
第1页 / 共42页
项目四LinuxShell程序设计.ppt_第2页
第2页 / 共42页
项目四LinuxShell程序设计.ppt_第3页
第3页 / 共42页
点击查看更多>>
资源描述
Linux系统管理与维护 项目四LinuxShell程序设计 Linux系统管理与维护 学习要点 掌握Shell的基本语法结构 学会编写并执行Shell脚本程序 学会在Linux下进行进程调度和作业调度 Linux系统管理与维护 任务一学习变量与表达式 Shell是操作系统最外面的一层 负责管理用户与操作系统之间的交互 例如等待用户输入 向操作系统解释用户的输入 以及处理操作系统的各种输出结果 除了作为命令解释器之外 Shell本身还是一个解释型的程序设计语言 Shell程序设计语言支持变量 表达式 函数和流程控制结构等 任何在终端能够执行的命令也放到Shell程序 4 1 1变量在Shell中有三种变量 系统变量 环境变量 用户变量 其中系统变量在对参数判断和命令返回值判断会使用 环境变量主要是在程序运行的时候需要设置 用户变量在编程过程中使用最多 这几种变量的赋值方法各不相同 主要有 直接设置变量值 变量之间的置换 从命令行参数获取 从环境变量获取和用户输入等几种方式 引用变量一般采用 variable 的形式引用变量variable的值 Linux系统管理与维护 1 系统变量Shell常用的系统变量用于提供系统信息 系统变量一般采用命令行参数获取 2 环境变量Shell在开始执行前就已经定义了一些与系统工作环境有关的变量 显示环境变量用echo命令 在bash中 设置环境变量用set命令 用unset命令可将环境变量重新设置为系统默认值 用户并不需要每次登录后都对各种环境变量进行手工设置 通过环境设置文件 用户的工作环境的设置可以在登录的时候由系统自动来完成 环境设置文件有两种 系统环境设置文件和用户环境设置文件 Linux系统管理与维护 Linux系统管理与维护 Linux系统管理与维护 3 用户变量不管系统变量和环境变量有多少 对于需求来说 总是不够的 用户常常需要自定义一些变量 这些变量就称为用户变量 定义用户变量的语法为 name string局部变量与全局变量Shell变量也有其规定的作用范围 局部变量的作用范围仅仅在其命令行所在的Shell或Shell脚本文件中 全局变量的作用范围则包括本Shell进程及其所有子进程 即相当于环境变量 贯穿于整个当前用户环境 可以使用export命令将局部变量设置为全局变量 exportname string Linux系统管理与维护 操作实例4 1 用文本编辑器gedit编写一个Shell脚本test1 sh 显示执行脚本时输入的参数及参数总数目 并定义一个局部变量和一个全局变量 Linux系统管理与维护 4 1 2表达式Shell中的表达式分为算术运算表达式 关系与逻辑表达式和正则表达式等几种 1 expr命令expr命令的功能是求表达式的值 2 算术表达式算术表达式可以是由运算符 组成的表达式 3 关系与逻辑表达式命令test与方括号 都用于进行条件测试 测试的结果返回逻辑值 即真true 0 和假false 1 test和 可以相互替换 Linux系统管理与维护 Linux系统管理与维护 Linux系统管理与维护 Linux系统管理与维护 Linux系统管理与维护 操作实例4 2 先练习使用表达式 然后用文本编辑器gedit编写一个计算1 5的平方的Shell脚本test2 sh 进一步熟悉表达式的作用 Linux系统管理与维护 任务二学习流程控制结构 4 2 1分支结构Shell程序中的条件语句主要有if语句 case语句 1 if语句if语句根据表达式的值来决定要执行的程序段落 其语法格式如下 if表达式1then语句块1elif表达式2then语句块2elif表达式3then语句块3 else语句块nfi Linux系统管理与维护 操作实例4 3 编写一个Shell脚本test3 sh 接收用户输入的文件名 然后在当前目录下检查该文件是否存在 Linux系统管理与维护 2 case语句case语句为用户提供了根据字符串或变量的值从多个选项中选择一项执行的方法 case语句的语法格式如下 case字符串in值1 值2 语句块1 值3 值4 语句块2 值5 值6 语句块3 esac Linux系统管理与维护 操作实例4 4 编写一个Shell脚本test4 sh 用case语句建立一个菜单 当用户选择菜单时 执行相应的操作 Linux系统管理与维护 4 2 2循环结构Shell常见的循环语句有for循环 while循环 until循环 1 for循环for循环对一个变量所有可能的值都执行一个命令序列 赋给变量的几个数值既可以在程序内以数值列表的形式提供 也可以在程序以外以参数的形式提供 for循环的一般格式如下 for循环变量 in列表 do语句块donefor语句对 in列表 中的每一项都执行一次 列表可以是包括几个单词并且有空格分隔开的变量 也可以是直接输入的几个值 每执行一次循环 循环变量都被赋予列表中的当前值 直到最后一个为止 in列表 子句也可以使用通配符 in列表 子句可以省略 此时 假定循环变量包含执行Shell程序时命令行的所有位置参数 即相当于 in Linux系统管理与维护 操作实例4 5 编写一个Shell脚本test5 sh 显示当前目录下的所有 sh文件的名称和内容 Linux系统管理与维护 2 while循环和until循环while语句与until语句具有类似的语法格式和功能 while语句会在测试条件为真时循环才执行 语法如下 while测试表达式do语句块doneuntil语句中当表达式的值为假时 循环才会继续执行命令 until测试表达式do语句块done Linux系统管理与维护 操作实例4 6 编写一个Shell脚本test6 sh 脚本在执行时 接收用户输入的文件名 然后显示该文件的内容 Linux系统管理与维护 3 break和continuebreak和continue无条件转移命令 break用于立即终止当前循环的执行 continue用于不执行循环中后面的语句而立即开始下一次循环的执行 这两个命令只有放在do和done之间才有效 Linux系统管理与维护 操作实例4 7 对 操作实例4 4 中的Shell脚本进行改进 用循环语句建立菜单 当用户选择了一次操作后 再次显示菜单供用户进行下一次选择 当用户按 q 键后 退出循环 Shell脚本的文件名为test7 sh Linux系统管理与维护 任务三编辑与运行Shell脚本 4 3 1vim的使用vi vim是Linux系统中使用最为普遍的全屏幕交互式文本编辑程序 它没有菜单 只有命令 但功能非常强大 vim可以执行输出 删除 查找 替换 块操作等众多文本操作 而且用户可以根据自己的需要对其进行定制 Vim有3种基本工作模式 命令模式 插入模式和末行模式 运行Vim编辑器的命令格式是 vim 选项 文件名 执行vim命令后 首先进入的是命令模式 用户输入进入插入模式的命令后 即可进入插入模式 Linux系统管理与维护 图4 1vim的运行模式及转换 Linux系统管理与维护 4 3 2Shell编程在Linux系统中 用Shell编写的批处理文件称为Shell脚本 它包含若干条命令和语句 可以解释执行 Shell脚本的作用主要包括 自动执行命令 实现系统管理和维护 创建简单的应用 操作文本或文件 1 编写Shell脚本Shell脚本包含如下成分 注释部分 注释部分以 开头的行 命令 在Shell脚本中可以出现任何在交互方式下可以使用的命令 变量 在Shell脚本中既可以使用用户自定义的变量 也可以使用系统环境变量 Shell变量分为局部变量和全局变量 局部变量的作用范围仅仅限制在其命令行所在的Shell或Shell脚本文件中 全局变量的作用范围则包括本Shell进程及其所有子进程 可以使用export内置命令将局部变量设置为全局变量 流程控制 流程控制语句对命令的执行流程进行控制 分支 循环 子Shell调用 用vim等编辑程序就可以创建Shell脚本 Shell脚本的文件扩展名一般为 sh Linux系统管理与维护 2 执行Shell脚本Shell脚本有三种执行方式 1 方式1bash脚本文件名 2 方式2source脚本文件名 3 方式3chmodu x脚本文件 脚本文件名用第一种和第二种方式 用户即使没有可执行权限 也可执行脚本文件 Linux系统管理与维护 操作实例4 8 利用循环计算10的阶乘 Shell脚本的文件名为test8 sh Linux系统管理与维护 任务四管理Linux中的进程与作业 4 4 1Linux中的进程1 Linux进程的基本概念Linux是一个多用户多任务的操作系统 多用户是指多个用户可以在同一时间使用计算机系统 多任务是指Linux可以同时执行几个任务 它可以在还未执行完一个任务时又执行另一项任务 程序是为了完成某种任务而编写的指令集合 但程序是静态的 只是存储在计算机上的一段代码 为了描述多任务这样一个动态的概念 引入了进程 进程就是程序在某个数据集合上的一次运行活动 为了区分进程 Linux中每个进程都有一个标识号 叫做PID ProcessID 系统启动后的第一个进程是init 它的PID是1 Linux系统管理与维护 2 Linux中进程的分类Linux中的进程一般分为交互式进程 批处理进程和守护进程三类 交互式进程 由一个Shell启动的进程 交互进程既可以在前台运行 也可以在后台运行 典型的应用比如编辑器vim 此类进程对系统响应时间要求比较高 否则用户会感觉系统反应迟缓 批处理进程 不与特定的终端相关联 提交到等待队列种顺序执行的进程 比如编译器 守护进程 一般是由系统在开机时通过脚本自动激活启动或超级管理用户root来启动 总是活跃的 一般运行于后台 这些后台守护进程时刻监听着前台客户的服务请求 一旦客户发出了服务请求 守护进程便为它们提供服务 Linux系统管理与维护 3 Linux进程的启动方式启动一个进程有两种途径 手工启动和调度启动 1 手工启动由用户输入命令 直接启动一个进程便是手工启动进程 手工启动进程又可分为前台启动和后台启动 前台启动 这是启动进程最常用的方式 一般地 用户键入一个命令就是启动了一个进程 而且是一个前台的进程 后台启动 假设用户要启动一个需要长时间运行的格式化文本文件的进程 为了不使整个Shell在耗时进程的运行过程中都处于 瘫痪 状态 从后台启动这个进程是明智的选择 从后台启动进程其实就是在命令结尾加上一个 号 键入命令以后 出现一个数字 这个数字就是该进程的PID 2 调度启动这种启动方式是事先进行调度安排 指定任务运行的时间或者场合 到时候系统会自动启动进程这一切工作 常用的调度启动命令有cron at等 Linux系统管理与维护 4 Linux进程管理命令 1 查看进程在Linux中 使用ps命令对进程进行查看 2 进程通信Linux进程间通信的方式很多 信号是一种最基本通信方式 Linux信号简介信号可以直接发送给进程 无需用户接口 进程在收到信号后 会做出相应处理 发送信号时要给出信号的名字或数字 可以用命令 kill l 显示当前系统支持的所有信号 用命令 man7signal 查看所有信号的解释 kill命令是通过向进程发送指定的信号来结束进程的 Linux系统管理与维护 Linux系统管理与维护 Linux系统管理与维护 5 进程调度 1 进程调度优先级在Linux操作系统中 进程之间是竞争资源关系 这个竞争优劣是通过谦让度来实现的 高谦让度表示进程优先级别最低 负值或0表示最高优先级 对其他进程不谦让 也就是拥有优先占用系统资源的权利 谦让度的值从 20到19 nice命令可以在创建进程时为进程指定谦让度的值 renice是通过进程ID PID 来改变谦让度 进而达到更改进程的优先级 2 交互式的进程管理工具 监视系统任务的工具top 系统监视器gnome system monitorgnome system monitor是一个图形化的系统监视器 Linux系统管理与维护 4 4 2Linux中的作业控制1 作业的概念作业 Job 是用户提交给操作系统计算的一个独立任务 作业流是指在批处理系统中把一批作业安排在输入设备上 然后依次读入系统进行处理 从而形成了作业流 操作系统中用来控制作业的进入 执行和撤消的一组程序称为作业管理程序 作业管理程序的主要任务是作业调度和作业控制 Linux中提供了专门的作业调度命令 Linux系统管理与维护 2 前台作业与后台作业用户可以直接控制的作业称为前台作业 用户放在内存中自动执行的作业称为后台作业 Linux中提供了一组用于前台 后台作业控制的命令 在后台执行作业将作业放到后台执行的方法是在命令后面加上 符号 将前台作业暂停到后台可以用 Ctrl Z 键将当前在前台运行的作业放到后台 并暂停执行 列出后台作业状态命令 jobs 将后台作业放到前台运行使用fg命令可以将后台作业放到前台运行 让后台暂停的命令在后台作业使用bg命令可以将后台暂停的命令在后台继续执行 Linux系统管理与维护 3 作业调度命令Linux提供了一些作业调度命令 用于在特定时间或周期性地执行程序 对于偶尔运行的作业采用at或batch调度 对于特定时间重复运行的作业采用cron调度和anacron调度 at调度at用于设置某一特定时刻执行的命令 at所设置的命令只执行一次 batch调度batch的作用与at类似 但它要在系统平均负载量降到0 8以下时才执行某项一次性的任务 cron调度cron用于安排周期性的任务作业 anacron调度anacron是和cron相似的任务调度器 只不过它并不要求系统持续运行 它可以用来运行通常由cron运行的每日 每周 和每月的作业 Linux系统管理与维护 操作实例4 9 1 查看系统当前进程 并观察各输出项和进程状态 2 以后台方式运行命令 manls 然后根据该进程的PID杀死该进程 3 运行命令 mancat 并用 Ctrl Z 键将其放到后台 查看该进程作业号 然后将其调回到前台 4 配置一个at作业 让系统在当前时间5分钟后将 root目录下的install log文件复制到 home目录下 5 配置一个cron作业 让系统在在每周2 4 6凌晨3点进入维护状态 重新启动系统 Linux系统管理与维护 自主训练 1 将 etc passwd的第一列取出 并每一列以字符串thenaccountis user 其中n表示行数 user表示抽取的用户 2 在根目录下有四个文件m1 txt m2 txt m3 txt m4 txt 用Shell编程 实现自动创建m1 m2 m3 m4四个目录 并将m1 txt m2 txt m3 txt m4 txt四个文件分别拷贝到各自相应的目录下 3 请用Shell编程来实现 当输入不同的选择时 执行不同的操作 如 输入start开始启动应用程序myfiles 输入stop时 关闭myfiles 输入status时 查看myfiles进程 否则执行 显示 EXIT 并退出程序 4 用Shell编程 判断一文件是不是字符设备文件 如果是将其拷贝到 dev目录下 Linux系统管理与维护 5 设计一个shell程序 添加一个新组为class1 然后添加属于这个组的30个用户 用户名的形式为stdxx 其中xx从01到30 6 某系统管理员需每天做一定的重复工作 请按照下列要求 编制一个解决方案 1 在下午4 50删除 abc目录下的全部子目录和全部文件 2 从早8 00 下午6 00每小时读取 xyz目录下x1文件中每行第一个域的全部数据加入到 backup目录下的bak01 txt文件内
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!