第7章 编写Shell管理脚本(一)_第1页
第7章 编写Shell管理脚本(一)_第2页
第7章 编写Shell管理脚本(一)_第3页
第7章 编写Shell管理脚本(一)_第4页
第7章 编写Shell管理脚本(一)_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第七章第七章 编写编写Shell管理脚本(一)管理脚本(一) 理论部分理论部分如何使系统开机后默认进入字符模式?如何使系统开机后默认进入字符模式? 如何禁止如何禁止bluetooth等服务开机后自动运行?等服务开机后自动运行?如何查看、终止系统中的进程?如何查看、终止系统中的进程?使用使用at、crontab计划任务的区别是什么?计划任务的区别是什么? crontab的配置记录由哪几部分组成?的配置记录由哪几部分组成?理解理解Shell的作用及分类的作用及分类掌握掌握Bash的常用功能的常用功能龙骑战机龙骑战机 http:/ Shell环境的切换环境的切换 编写编写Shell脚本脚本 Bash

2、的常用功能的常用功能 编写编写Shell管理脚管理脚本(一)本(一)Shell变量应用变量应用 编写并执行编写并执行Shell脚本脚本 用户自定义变量用户自定义变量 环境变量环境变量 位置变量、预定义变量位置变量、预定义变量 Shell脚本应用实例脚本应用实例 执行执行Shell脚本脚本 Shell的作用的作用 命令解释器,命令解释器,“翻译官翻译官”介于操作系统内核与用户之间,负责解释命令行介于操作系统内核与用户之间,负责解释命令行Shell计算机用户应用程序Linux内核输入输入控制控制系统硬件输出输出KshBshCshBashZsh兼具兼具Bsh的语法和的语法和Csh的交互特性的交互特性

3、 70年代中期诞生于贝年代中期诞生于贝尔实验室,有较强的尔实验室,有较强的脚本编程功能脚本编程功能80年代早期诞生于加利福年代早期诞生于加利福尼亚大学尼亚大学 ,使用,使用C语言风语言风格,命令交互方便格,命令交互方便Bsh的升级版,的升级版,Linux系系统中的默认统中的默认Shell兼具各种兼具各种Shell程序优点,交程序优点,交互式操作效率更高互式操作效率更高 rootlocalhost # cat /etc/shells/bin/sh/bin/bash/sbin/nologin/bin/tcsh/bin/csh/bin/ksh 如何切换如何切换Shell环境环境临时切换:直接执行其他

4、临时切换:直接执行其他Shell程序,例如程序,例如ksh、zsh等等更改用户登录更改用户登录Shell:p 需修改 /etc/passwd 文件中用户记录的最后一个字段p 或执行:usermod -s Shell程序路径 用户名登录登录Shell指指用户每次登录系统后自动加载的用户每次登录系统后自动加载的Shell程序,大多数程序,大多数Linux系统系统采用采用 /bin/bash 作为默认登录作为默认登录Shell/etc/shells 文件记录了系统支持的有效登录文件记录了系统支持的有效登录ShellTab键自动补齐键自动补齐命令编辑快捷键命令编辑快捷键命令历史命令历史命令别名命令别名

5、标准输入输出标准输入输出重定向操作重定向操作管道操作管道操作命令历史命令历史保存用户曾经执行过的命令操作保存用户曾经执行过的命令操作存放位置:存放位置:/.bash_history 文件文件查看历史命令查看历史命令 使用使用、按键逐条翻看,允许编辑并重复执行按键逐条翻看,允许编辑并重复执行执行:执行:history清除历史命令清除历史命令执行:执行:history -crootlocalhost root# history556 useradd jerry557 passwd jerry558 crontab -e -u jerry559 crontab -l -u jerry调用历史命令调用

6、历史命令!n:执行历史记录中的第:执行历史记录中的第n条命令条命令!str:执行历史记录中最近一次以:执行历史记录中最近一次以“str”开头的命令开头的命令设置记录历史命令的条数设置记录历史命令的条数修改修改 HISTSIZE 参数(默认为参数(默认为1000条)条)rootlocalhost root# !562crontab -l -u jerryno crontab for jerryrootlocalhost # vi /etc/profileHISTSIZE=200命令别名命令别名为使用频率较高的复杂命令行设置简短的调用名称为使用频率较高的复杂命令行设置简短的调用名称存放位置:存放位

7、置:/.bashrc查看命令别名查看命令别名格式:格式:alias 别名别名设置命令别名设置命令别名执行:执行:alias 别名别名=实际执行的命令实际执行的命令取消已设置的命令别名取消已设置的命令别名 格式:格式:unalias 别名别名 unalias -arootlocalhost # aliasalias cp=cp -ialias l.=ls -d .* -color=ttyalias ll=ls -l -color=ttyalias ls=ls -color=ttyalias mv=mv -ialias rm=rm -i交互式硬件设备交互式硬件设备标准输入:从该设备接收用户输入的数

8、据标准输入:从该设备接收用户输入的数据标准输出:通过该设备向用户输出数据标准输出:通过该设备向用户输出数据标准错误:通过该设备报告执行出错信息标准错误:通过该设备报告执行出错信息类型类型设备文件设备文件文件描述编号文件描述编号默认设备默认设备标准输入标准输入/dev/stdin0键盘键盘标准输出标准输出/dev/stdout1显示器显示器标准错误输出标准错误输出/dev/stderr2显示器显示器改变标准输入、标准输出、标准错误的方向改变标准输入、标准输出、标准错误的方向类型类型操作符操作符用途用途重定向标准输入重定向标准输入将命令的执行结果输出到指定的文件中,而将命令的执行结果输出到指定的文

9、件中,而不是直接显示在屏幕上不是直接显示在屏幕上 将命令执行的结果追加输出到指定文件将命令执行的结果追加输出到指定文件 重定向标准错误重定向标准错误2清空指定文件的内容,并将标准错误信息保清空指定文件的内容,并将标准错误信息保存到该文件中存到该文件中2将标准错误信息追加输出到指定的文件中将标准错误信息追加输出到指定的文件中重定向标准输出和重定向标准输出和标准错误标准错误&将标准输出、标准错误的内容全部保存到指将标准输出、标准错误的内容全部保存到指定的文件中,而不是直接显示在屏幕上定的文件中,而不是直接显示在屏幕上管道操作符号管道操作符号“|”连接左右两个命令,将左侧的命令输出的结果,作

10、为连接左右两个命令,将左侧的命令输出的结果,作为右侧命令的输入(处理对象)右侧命令的输入(处理对象)格式:格式:cmd1 | cmd2 . | cmdnrootlocalhost # free -m | head -2 total used free shared buffers cachedMem: 503 339 163 0 87 199rootlocalhost # free -m | grep Mem | awk print $2,$4503 163awk,以空格或制表位为分隔,以空格或制表位为分隔,输出指定第输出指定第n列数据列数据Shell变量变量为灵活管理为灵活管理Linux系统

11、提供特定参数,有两层意思:系统提供特定参数,有两层意思:p 变量名:使用固定的名称,由系统预设或用户定义p 变量值:能够根据用户设置、系统环境变化而变化Shell变量的种类变量的种类用户自定义变量:由用户自己定义、修改和使用用户自定义变量:由用户自己定义、修改和使用环境变量:由系统维护,用于设置用户的环境变量:由系统维护,用于设置用户的Shell工作环工作环境,只有极少数的变量用户可以修改境,只有极少数的变量用户可以修改预定义变量:预定义变量:Bash预定义的特殊变量,不能直接修改预定义的特殊变量,不能直接修改位置变量:通过命令行给程序传递执行参数位置变量:通过命令行给程序传递执行参数定义新的

12、变量定义新的变量变量名要以英文字母或下划线开头,区分大小写变量名要以英文字母或下划线开头,区分大小写格式:格式:变量名变量名=变量值变量值查看变量的值查看变量的值格式:格式:echo $变量名变量名rootlocalhost # DAY=Sunday rootlocalhost # echo $DAYSunday 通过通过$符号引用指定符号引用指定名称的变量值名称的变量值从键盘输入内容为变量赋值从键盘输入内容为变量赋值 格式:格式: read -p “提示信息提示信息 变量名变量名结合不同的引号为变量赋值结合不同的引号为变量赋值双引号双引号 “ ” :允许通过:允许通过$符号引用其他变量值符号

13、引用其他变量值单引号单引号 :禁止引用其他变量值,:禁止引用其他变量值,$视为普通字符视为普通字符反撇号反撇号 :将命令执行的结果输出给变量:将命令执行的结果输出给变量设置变量的作用范围设置变量的作用范围格式:格式:export 变量名变量名. export 变量名变量名=变量值变量值 .变量名变量名n=变量值变量值n清除用户定义的变量清除用户定义的变量格式:格式:unset 变量名变量名rootlocalhost # echo $FILESVRrootlocalhost # export FILESVRrootlocalhost # zshrootlocalhost# echo $FILES

14、VRrootlocalhost# exitrootlocalhost root# unset FILESVRrootlocalhost root# echo $FILESVRrootlocalhost root#输出为全局变量输出为全局变量清除该变量内容清除该变量内容计算整数表达式的运算结果计算整数表达式的运算结果格式:格式:expr 变量变量1 运算符运算符 变量变量2 .运算符运算符 变量变量nexpr的常用运算符的常用运算符加法运算:加法运算:+减法运算:减法运算: -乘法运算:乘法运算: *除法运算:除法运算: /求模(取余)运算:求模(取余)运算: % 环境变量配置文件环境变量配置文

15、件全局配置文件:全局配置文件:/etc/profile 用户配置文件:用户配置文件:/.bash_profile查看环境变量查看环境变量 set命令可以查看所有的命令可以查看所有的Shell变量,其中包括环境变量变量,其中包括环境变量rootlocalhost root# setSHELL=/bin/bashTERM=xtermUID=0USER=rootconsoletype=ptyrootlocalhost # echo $PATH/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/

16、usr/sbin:/usr/bin:/root/binrootlocalhost # PATH=/opt/bin:$PATHrootlocalhost # echo $PATH/opt/bin:/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin常见的环境变量:常见的环境变量:p $USER 、$LOGNAMEp $UID 、 $SHELL 、$HOMEp $PWD、 $PATH p $PS1、$PS2rootlocalhost #

17、./exam01 one two three four five six表示为表示为 $n,n为为19之间的数字之间的数字$1$1,第,第1 1个位置参数个位置参数$2$2,第,第2 2个位置参数个位置参数$6$6,第,第6 6个位置参数个位置参数表示形式如下表示形式如下$#:命令行中位置参数的个数:命令行中位置参数的个数$*:所有位置参数的内容:所有位置参数的内容$?:上一条命令执行后返回的状态,当返回状态值为:上一条命令执行后返回的状态,当返回状态值为0时表示执行正常,非时表示执行正常,非0值表示执行异常或出错值表示执行异常或出错$:当前所在进程的进程号:当前所在进程的进程号$!:后台运行

18、的最后一个进程号:后台运行的最后一个进程号$0:当前执行的进程:当前执行的进程/程序名程序名rootlocalhost # bash rootlocalhost # echo $0 $bash 5887rootlocalhost # exxitbash: exxit: command not foundrootlocalhost # echo $?127rootlocalhost # exitexitrootlocalhost # echo $? 0查看当前所执行进程查看当前所执行进程的名称、的名称、PIDPID号号执行一条错误命令执行一条错误命令返回非返回非0 0值,表示上值,表示上一条命令

19、异常一条命令异常返回返回0 0值,表示上一值,表示上一条命令正常条命令正常请思考:请思考:RHEL5系统中默认使用哪种系统中默认使用哪种Shell?在在Shell的变量应用中,三种引号的作用有何区别?的变量应用中,三种引号的作用有何区别?环境变量环境变量PWD的作用是什么,如何查看该变量的值?的作用是什么,如何查看该变量的值?变量变量A的值为的值为13,B的值为的值为17,如何计算其乘积?,如何计算其乘积?Shell脚本脚本用途:完成特定的、较复杂的系统管理任务用途:完成特定的、较复杂的系统管理任务格式:集中保存多条格式:集中保存多条Linux命令,普通文本文件命令,普通文本文件执行方式:按照

20、预设的顺序依次解释执行执行方式:按照预设的顺序依次解释执行建立包含执行语句的脚本文件建立包含执行语句的脚本文件 脚本文件中包括的内容脚本文件中包括的内容 p 运行环境设置:#!/bin/bash p 注释信息:以#开始的说明性文字 p 可执行的Linux命令行为脚本文件添加可执行权限为脚本文件添加可执行权限rootlocalhost # vi repboot.sh#!/bin/bash# To show usage of /boot directory and mode of kernel file.echo Useage of /boot: du -sh /bootecho The mode

21、 of kernel file:ls -lh /boot/vmlinuz-*rootlocalhost # chmod a+x repboot.sh 直接执行具有直接执行具有“x”权限的脚本文件权限的脚本文件 例如:例如:./repboot.sh 使用指定的解释器程序执行脚本内容使用指定的解释器程序执行脚本内容 例如:例如:bash repboot.sh、sh repboot.sh通过通过source命令(或命令(或 . )读取脚本内容执行)读取脚本内容执行 例如:例如:souce repboot.sh 或或 . hello.sh 示例示例1:每周五每周五17:30清理清理FTP服务器的公共共

22、享目录服务器的公共共享目录p 检查 /var/ftp/pub/ 目录,将其中所有子目录及文件的详细列表、当时的时间信息追加保存到 /var/log/pubdir.log 日志文件中,然后清空该目录rootlocalhost # vi /opt/ftpclean.sh#!/bin/bashdate /var/log/pubdir.logls -lhR /var/ftp/pub /var/log/pubdir.logrm -rf /var/ftp/pub/*rootlocalhost # crontab -e30 17 * * 5 /opt/ftpclean.sh示例示例2:每隔每隔3天对数据库目

23、录做一次完整备份天对数据库目录做一次完整备份p 统计 /var/lib/mysql 目录占用的空间大小、查看当前的日期,并记录到临时文件 /tmp/dbinfo.txt 中p 将 /tmp/dbinfo.txt 文件、/var/lib/mysql 目录进行压缩归档,备份到/opt/dbbak/目录中p 备份后的包文件名中要包含当天的日期信息p 最后删除临时文件/tmp/dbinfo.txtrootlocalhost # vi /opt/dbbak.sh#!/bin/bashDAY=date +%Y%m%dSIZE=du -sh /var/lib/mysqlecho Date: $DAY /tm

24、p/dbinfo.txtecho Data Size: $Size /tmp/dbinfo.txtcd /opt/dbbaktar zcf mysqlbak-$DAY.tar.gz /var/lib/mysql /tmp/dbinfo.txtrm -f /tmp/dbinfo.txtrootlocalhost # crontab -e55 23 */3 * * /opt/dbbak.shShell环境概述环境概述Shell的作用及常见种类的作用及常见种类Shell脚本的概念脚本的概念 Shell环境的切换环境的切换 编写编写Shell脚本脚本 Bash的常用功能的常用功能 编写编写Shell管

25、理脚管理脚本(一)本(一)Shell变量应用变量应用 编写并执行编写并执行Shell脚本脚本 用户自定义变量用户自定义变量 环境变量环境变量 位置变量、预定义变量位置变量、预定义变量 Shell脚本应用实例脚本应用实例 执行执行Shell脚本脚本 第七章第七章 编写编写Shell管理脚本(一)管理脚本(一) 上机部分上机部分需求描述需求描述使使root用户能通过用户能通过“服务名服务名 start”形式控制系统服务形式控制系统服务的状态,而无需使用的状态,而无需使用service命令或绝对路径命令或绝对路径将将root用户的命令历史记录限制为用户的命令历史记录限制为50条条添加一个命令别名添加一个命令别名lh,用于以长格式并使用,用于以长格式并使用K、M等容等容量单位显示目录及文件列表信息量单位显示目录及文件列表信息每次每次root用户登陆到时,自动报告当前登录的用户数、用户登陆到时,自动报告当前登录的用户数、打开的进程数、剩余可用内存、剩余交换空间打开的进程数、剩余可用内存、剩余交换空间练习重定向、变量操作、脚本应用等相关知识练习重定向、变量操作、脚本应用等相关知识实现思路实现思路修改修改“/root/.bash_profile”文件文件p 在环境变量PATH中添加“/

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论