




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、项目四LinuxShell程序设计 Linux系统管理与维护系统管理与维护 Linux Shell 项目四LinuxShell程序设计 系统管理与维护 【学习要点】 l掌握Shell的基本语法结构。 l学会编写并执行Shell脚本程序。 l学会在Linux下进行进程调度和作业调度。 项目四LinuxShell程序设计 系统管理与维护 任务一任务一 学习变量与表达式学习变量与表达式 lShell是操作系统最外面的一层,负责管理用户与操作系统之间的交互, 例如等待用户输入,向操作系统解释用户的输入,以及处理操作系统 的各种输出结果。 l除了作为命令解释器之外,Shell本身还是一个解释型的程序设计
2、语言。 Shell程序设计语言支持变量、表达式、函数和流程控制结构等,任何 在终端能够执行的命令也放到Shell程序。 l4.1.1 变量 l在Shell中有三种变量:系统变量,环境变量,用户变量。其中系统变 量在对参数判断和命令返回值判断会使用,环境变量主要是在程序运 行的时候需要设置,用户变量在编程过程中使用最多。 l这几种变量的赋值方法各不相同,主要有:直接设置变量值、变量之 间的置换、从命令行参数获取、从环境变量获取和用户输入等几种方 式。 l引用变量一般采用“$variable”的形式引用变量variable的值。 项目四LinuxShell程序设计 系统管理与维护 l1系统变量系统
3、变量 lShell常用的系统变量用于提供系统信息。系统变量一般采 用命令行参数获取。 l2环境变量环境变量 lShell在开始执行前就已经定义了一些与系统工作环境有关 的变量。 l显示环境变量用echo命令。 l在bash中,设置环境变量用set命令 。用unset命令可将环 境变量重新设置为系统默认值,。 l用户并不需要每次登录后都对各种环境变量进行手工设置, 通过环境设置文件,用户的工作环境的设置可以在登录的 时候由系统自动来完成。环境设置文件有两种:系统环境 设置文件和用户环境设置文件。 项目四LinuxShell程序设计 系统管理与维护 表表4-1 常见的系统变量常见的系统变量 变量名
4、变量名说明说明 $#不包括命令在内的命令行参数的数目 $*命令行所有参数组成的字符串 $命令行所有参数组成的字符串 $nn为数字,$0表示命令名称,$1表示命令第一个 参数,以此类推 $?上一个命令的返回值,如果正常退出则返回0, 反之为非0值 $当前进程的进程号PID $!后台运行的最后一个进程的进程号PID 项目四LinuxShell程序设计 系统管理与维护 表表4-2 Shell中的环境变量中的环境变量 变量变量 名名 说明说明 变量变量 名名 说明说明 HOM E 当前用户的主目录PWD用户的当前目录 PATH命令搜索路径UID当前用户标识符 LOG N A M E 用户登录名TER
5、M 终端的类型 PS1第一命令提示符,是 #或$ SHE L L 用户的Shell类型及 路径 PS2第二命令提示符,默 认是 HISF I L E 存储历史命令的文 件 项目四LinuxShell程序设计 系统管理与维护 l3用户变量用户变量 l不管系统变量和环境变量有多少,对于需求来说,总是不 够的。用户常常需要自定义一些变量,这些变量就称为用 户变量。 l定义用户变量的语法为: lname=string l局部变量与全局变量局部变量与全局变量 lShell变量也有其规定的作用范围。局部变量的作用范围仅 仅在其命令行所在的Shell或Shell脚本文件中。全局变量 的作用范围则包括本She
6、ll进程及其所有子进程,即相当于 环境变量, 贯穿于整个当前用户环境。可以使用export命 令将局部变量设置为全局变量。 lexport name=string 项目四LinuxShell程序设计 系统管理与维护 l【操作实例操作实例4.1】 l用文本编辑器gedit编写一个Shell脚本 test1.sh,显示执行脚本时输入的参数及参 数总数目,并定义一个局部变量和一个全 局变量。 项目四LinuxShell程序设计 系统管理与维护 l4.1.2 表达式 lShell中的表达式分为算术运算表达式、关系与逻辑表达式 和正则表达式等几种。 l1.expr命令命令 lexpr命令的功能是求表达式
7、的值。 l2. 算术表达式算术表达式 l算术表达式可以是由运算符+、-、*、/、=组成的表达式。 l3. 关系与逻辑表达式关系与逻辑表达式 l命令test与方括号 都用于进行条件测试,测试的结果返 回逻辑值,即真true(0)和假false(1)。test和 可以相互替 换。 项目四LinuxShell程序设计 系统管理与维护 表表4-4 常用的数值测试运算符常用的数值测试运算符 运算运算 符符 说明说明 -eq如果int1=int2,则为真 -ne如果int1!=int2,则为真 -gt如果int1int2,则为真 -ge如果int1=int2,则为真 -lt如果int1int2,则为真 -
8、le如果int1=int2,则为真 项目四LinuxShell程序设计 系统管理与维护 表表4-5 常用的字符串测试运算符常用的字符串测试运算符 运算运算 符符 说明说明 =如果字符串str1和str2相同,则为真 !=如果字符串str1和str2不同,则为真 -z如果字符串str的长度为0,则为真 -n如果字符串str的长度不为0,则为真 项目四LinuxShell程序设计 系统管理与维护 表表4-6 常用的文件测试运算符常用的文件测试运算符 运算符运算符说明说明 -e如果文件存在,则为真 -r如果文件存在且可读,则为真 -w如果文件存在且可写,则为真 -x如果文件存在且可执行,则为真 -s
9、如果文件存在且长度大于0,则为真 -d如果文件存在且为目录,则为真 -f如果文件存在且为普通文件,则为真 -b如果文件存在且为特殊块文件,则为真 -L如果文件存在且为符号链接文件,则为真 -O如果文件存在且属于当前用户文件,则为真 -G如果文件存在且属于当前组文件,则为真 -nt测试两个文件的新旧,前一个文件比后一个新,则为真 -ot测试两个文件的新旧,前一个文件比后一个旧,则为真 项目四LinuxShell程序设计 系统管理与维护 表表4-7 逻辑运算符逻辑运算符 运算运算 符符 说明说明 !非运算,对逻辑值取反 -a与运算,两个逻辑值为真返回值才为真,否 则为假 -o或运算,两个逻辑值有一
10、个为真,返回值就 为真 项目四LinuxShell程序设计 系统管理与维护 l【操作实例操作实例4.2】 l先练习使用表达式,然后用文本编辑器 gedit编写一个计算1-5的平方的Shell脚本 test2.sh,进一步熟悉表达式的作用。 项目四LinuxShell程序设计 系统管理与维护 任务二任务二 学习流程控制结构学习流程控制结构 l4.2.1 分支结构 lShell程序中的条件语句主要有if语句、case语句。 l1.if语句语句 lif语句根据表达式的值来决定要执行的程序段落。其语法格式如下: lif表达式1 then l语句块1 elif表达式2 then l语句块2 elif表达
11、式3 then l语句块3 else l语句块n lfi 项目四LinuxShell程序设计 系统管理与维护 l【操作实例操作实例4.3】 l编写一个Shell脚本test3.sh,接收用户输入 的文件名,然后在当前目录下检查该文件 是否存在。 项目四LinuxShell程序设计 系统管理与维护 l2.case语句语句 lcase语句为用户提供了根据字符串或变量的值从多个选项 中选择一项执行的方法。case语句的语法格式如下: lcase 字符串 in 值1|值2) l语句块1; 值3|值4) l语句块2; 值5|值6) l语句块3; lesac 项目四LinuxShell程序设计 系统管理与
12、维护 l【操作实例操作实例4.4】 l编写一个Shell脚本test4.sh,用case语句建 立一个菜单,当用户选择菜单时,执行相 应的操作。 项目四LinuxShell程序设计 系统管理与维护 l4.2.2 循环结构 lShell常见的循环语句有for循环、while循环、until循环。 l1.for循环循环 lfor循环对一个变量所有可能的值都执行一个命令序列。赋给变量的几个数值 既可以在程序内以数值列表的形式提供,也可以在程序以外以参数的形式提 供。 lfor循环的一般格式如下: lfor循环变量 in列表 do l语句块 done lfor语句对in列表中的每一项都执行一次。列表可
13、以是包括几个单词并且有空 格分隔开的变量,也可以是直接输入的几个值。每执行一次循环,循环变量 都被赋予列表中的当前值,直到最后一个为止。in列表子句也可以使用通配 符。 lin列表子句可以省略,此时,假定循环变量包含执行Shell程序时命令行的所 有位置参数,即相当于in“$”。 项目四LinuxShell程序设计 系统管理与维护 l【操作实例操作实例4.5】 l编写一个Shell脚本test5.sh,显示当前目录 下的所有.sh文件的名称和内容。 项目四LinuxShell程序设计 系统管理与维护 l2.while循环和循环和until循环循环 lwhile语句与until语句具有类似的语法
14、格式和功能。while 语句会在测试条件为真时循环才执行,语法如下: lwhile 测试表达式 do l语句块 done luntil语句中当表达式的值为假时,循环才会继续执行命令: luntil 测试表达式 do l语句块 done 项目四LinuxShell程序设计 系统管理与维护 l【操作实例操作实例4.6】 l编写一个Shell脚本test6.sh,脚本在执行时, 接收用户输入的文件名,然后显示该文件 的内容。 项目四LinuxShell程序设计 系统管理与维护 l3.break和和continue lbreak和continue无条件转移命令。break用 于立即终止当前循环的执行,
15、continue用于 不执行循环中后面的语句而立即开始下一 次循环的执行。这两个命令只有放在do和 done之间才有效。 项目四LinuxShell程序设计 系统管理与维护 l【操作实例操作实例4.7】 l对【操作实例操作实例4.4】中的Shell脚本进行改进, 用循环语句建立菜单,当用户选择了一次 操作后,再次显示菜单供用户进行下一次 选择,当用户按“q”键后,退出循环。 Shell脚本的文件名为test7.sh。 项目四LinuxShell程序设计 系统管理与维护 任务三任务三 编辑与运行编辑与运行Shell脚本脚本 l4.3.1 vim的使用 lvi/vim是Linux系统中使用最为普遍
16、的全屏幕交互式文本编 辑程序。它没有菜单,只有命令,但功能非常强大。vim 可以执行输出、删除、查找、替换、块操作等众多文本操 作,而且用户可以根据自己的需要对其进行定制。 lVim有3种基本工作模式:命令模式、插入模式和末行模式。 l运行Vim编辑器的命令格式是: lvim 选项 文件名 l执行vim命令后,首先进入的是命令模式。用户输入进入 插入模式的命令后,即可进入插入模式。 项目四LinuxShell程序设计 系统管理与维护 图图4-1 vim的运行模式及转换的运行模式及转换 项目四LinuxShell程序设计 系统管理与维护 l4.3.2 Shell编程 l在Linux系统中,用Sh
17、ell编写的批处理文件称为Shell脚本,它包含若干条命 令和语句,可以解释执行。 lShell脚本的作用主要包括:自动执行命令;实现系统管理和维护;创建简单 的应用;操作文本或文件。 l1编写编写Shell脚本脚本 lShell脚本包含如下成分: l注释部分:注释部分:注释部分以#开头的行。 l命令:命令:在Shell脚本中可以出现任何在交互方式下可以使用的命令。 l变量:变量:在Shell脚本中既可以使用用户自定义的变量,也可以使用系统环境变 量。Shell变量分为局部变量和全局变量。局部变量的作用范围仅仅限制在其 命令行所在的Shell或Shell脚本文件中。全局变量的作用范围则包括本S
18、hell进 程及其所有子进程。可以使用export内置命令将局部变量设置为全局变量。 l流程控制:流程控制:流程控制语句对命令的执行流程进行控制 (分支、循环、子Shell 调用)。 l用vim等编辑程序就可以创建Shell脚本。Shell脚本的文件扩展名一般为“.sh”。 项目四LinuxShell程序设计 系统管理与维护 l2执行执行Shell脚本脚本 lShell脚本有三种执行方式: l(1)方式1 lbash 脚本文件名 l(2)方式2 lsource脚本文件名 l(3)方式3 lchmod u+x 脚本文件 l./脚本文件名 l用第一种和第二种方式,用户即使没有可执行权限,也可 执行
19、脚本文件。 项目四LinuxShell程序设计 系统管理与维护 l【操作实例操作实例4.8】 l利用循环计算10的阶乘。Shell脚本的文件 名为test8.sh。 项目四LinuxShell程序设计 系统管理与维护 任务四任务四 管理管理Linux中的进程与作业中的进程与作业 l4.4.1 Linux中的进程中的进程 l1Linux进程的基本概念进程的基本概念 lLinux是一个多用户多任务的操作系统。多用户是指多个 用户可以在同一时间使用计算机系统;多任务是指Linux 可以同时执行几个任务,它可以在还未执行完一个任务时 又执行另一项任务。 l程序是为了完成某种任务而编写的指令集合。但程序
20、是静 态的,只是存储在计算机上的一段代码。为了描述多任务 这样一个动态的概念,引入了进程。进程就是程序在某个 数据集合上的一次运行活动。 l为了区分进程,Linux中每个进程都有一个标识号,叫做 PID(Process ID)。系统启动后的第一个进程是init,它 的PID是1。 项目四LinuxShell程序设计 系统管理与维护 l2Linux中进程的分类中进程的分类 lLinux中的进程一般分为交互式进程、批处理进程和守护 进程三类。 l交互式进程:交互式进程:由一个Shell启动的进程。交互进程既可以在 前台运行,也可以在后台运行。典型的应用比如编辑器 vim。此类进程对系统响应时间要求
21、比较高,否则用户会 感觉系统反应迟缓。 l批处理进程批处理进程:不与特定的终端相关联,提交到等待队列种 顺序执行的进程。比如编译器。 l守护进程守护进程:一般是由系统在开机时通过脚本自动激活启动 或超级管理用户root来启动,总是活跃的,一般运行于后 台。这些后台守护进程时刻监听着前台客户的服务请求, 一旦客户发出了服务请求,守护进程便为它们提供服务。 项目四LinuxShell程序设计 系统管理与维护 l3Linux进程的启动方式进程的启动方式 l启动一个进程有两种途径:手工启动和调度启动。 l(1)手工启动 l由用户输入命令,直接启动一个进程便是手工启动进程。手工启动进 程又可分为前台启动
22、和后台启动。 l前台启动:这是启动进程最常用的方式。一般地,用户键入一个命 令就是启动了一个进程,而且是一个前台的进程。 l后台启动:假设用户要启动一个需要长时间运行的格式化文本文件 的进程,为了不使整个Shell在耗时进程的运行过程中都处于“瘫痪” 状态,从后台启动这个进程是明智的选择。从后台启动进程其实就是 在命令结尾加上一个&号。键入命令以后,出现一个数字,这个数字 就是该进程的PID。 l(2)调度启动 l这种启动方式是事先进行调度安排,指定任务运行的时间或者场合, 到时候系统会自动启动进程这一切工作。常用的调度启动命令有cron、 at等。 项目四LinuxShell程序设计 系统管
23、理与维护 l4.Linux进程管理命令进程管理命令 l(1) 查看进程 l在Linux中,使用ps命令对进程进行查看。 l(2)进程通信 lLinux进程间通信的方式很多,信号是一种最基本通信方 式。 lLinux信号简介 l信号可以直接发送给进程,无需用户接口。进程在收到信 号后,会做出相应处理。发送信号时要给出信号的名字或 数字。可以用命令“kill -l”,显示当前系统支持的所有信 号。用命令“man 7 signal”查看所有信号的解释。 lkill命令是通过向进程发送指定的信号来结束进程的。 项目四LinuxShell程序设计 系统管理与维护 表表4-6 ps命令常用选项说明命令常用
24、选项说明 选选 项项 说明说明选选 项项 说明说明 a显示所有进程e在命令后显示环 境变量 u显示进程属主名 和启动时间等 信息 w宽行输出 x显示没有控制终 端的进程 -e 显示所有进程 f显示进程树-f 显示全部 项目四LinuxShell程序设计 系统管理与维护 表表4-7 ps命令输出信息的含义命令输出信息的含义 选项选项说明说明选项选项说明说明 PID进程号TIME进程占用CPU的时间 PPID父进程号USER用户名 TTY进程所启动的终端%CPU进程占用CPU时间与总时间的百分比 STAT进程当前状态%MEM占用内存与系统内存问题的百分比 START进程开始执行时间SIZE进程大小
25、+数据大小+栈空间大小 VSZ进程占用的虚拟内存空间COMMAND进程的命令名 RSS进程占用的内存空间 项目四LinuxShell程序设计 系统管理与维护 l5.进程调度进程调度 l(1)进程调度优先级 l在Linux 操作系统中,进程之间是竞争资源关系。这个竞争优劣是通 过谦让度来实现的。高谦让度表示进程优先级别最低。负值或0表示 最高优先级,对其他进程不谦让,也就是拥有优先占用系统资源的权 利。谦让度的值从 20到19。 lnice命令可以在创建进程时为进程指定谦让度的值。 lrenice 是通过进程ID(PID)来改变谦让度,进而达到更改进程的优 先级。 l(2)交互式的进程管理工具
26、l监视系统任务的工具top l系统监视器gnome-system-monitor lgnome-system-monitor是一个图形化的系统监视器 项目四LinuxShell程序设计 系统管理与维护 l4.4.2 Linux中的作业控制 l1作业的概念作业的概念 l作业(Job)是用户提交给操作系统计算的一个独 立任务。 l作业流是指在批处理系统中把一批作业安排在输 入设备上,然后依次读入系统进行处理,从而形 成了作业流。 l操作系统中用来控制作业的进入、执行和撤消的 一组程序称为作业管理程序。作业管理程序的主 要任务是作业调度和作业控制。 lLinux中提供了专门的作业调度命令。 项目四L
27、inuxShell程序设计 系统管理与维护 l2前台作业与后台作业前台作业与后台作业 l用户可以直接控制的作业称为前台作业。用户放在内存中自动执 行的作业称为后台作业。Linux中提供了一组用于前台、后台作业控 制的命令。 l在后台执行作业 l将作业放到后台执行的方法是在命令后面加上“&”符号。 l将前台作业暂停到后台 l可以用“Ctrl+Z”键将当前在前台运行的作业放到后台,并暂停执行。 l列出后台作业状态命令-jobs l将后台作业放到前台运行 l使用fg命令可以将后台作业放到前台运行。 l让后台暂停的命令在后台作业 l使用bg命令可以将后台暂停的命令在后台继续执行。 项目四LinuxShell程序设计 系统管理与维护 l3.作业调度命令作业调度命令 lLinux提供了一些作业调度命令,用于在特定时间或周期性地执行程 序。对于偶尔运行的作业采用at或batch调度。对于特定时间重复运行 的作业采用cron调度和a
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 硬件升级保证金协议
- 2025个人工作心得体会销售(4篇)
- 工作流程优化协议范本
- 欧式厂房出租合同协议
- 楼顶屋面防水合同协议
- 含税金额合同协议
- 吴中区借钱合同协议
- 快销品供货合同协议
- 正规企业外包合同协议
- 忻州租房合同和三方协议
- 2025年高考历史总复习高中历史必修二八大专题知识复习提纲
- 2025事业单位考试题库及答案200题
- 临床执业医师考试健康教育技能试题及答案
- 机车车辆试题及答案
- 地理澳大利亚课件-2024-2025学年人教版(2024)初中地理七年级下册
- 常用施工规定和技术要求1
- 旅游景区娱乐服务设计
- 新版《医疗器械经营质量管理规范》(2024)培训试题及答案
- 大数据与人工智能营销(南昌大学)知到智慧树章节答案
- 健合集团笔试在线测评题
- 2024届江苏省苏锡常镇四市高三二模地理试题含答案解析
评论
0/150
提交评论