![《Linux操作系统》课件-Shell脚本编程和自动化_第1页](http://file4.renrendoc.com/view6/M00/33/00/wKhkGWetyNKAIzfyAAEruWbpqK0621.jpg)
![《Linux操作系统》课件-Shell脚本编程和自动化_第2页](http://file4.renrendoc.com/view6/M00/33/00/wKhkGWetyNKAIzfyAAEruWbpqK06212.jpg)
![《Linux操作系统》课件-Shell脚本编程和自动化_第3页](http://file4.renrendoc.com/view6/M00/33/00/wKhkGWetyNKAIzfyAAEruWbpqK06213.jpg)
![《Linux操作系统》课件-Shell脚本编程和自动化_第4页](http://file4.renrendoc.com/view6/M00/33/00/wKhkGWetyNKAIzfyAAEruWbpqK06214.jpg)
![《Linux操作系统》课件-Shell脚本编程和自动化_第5页](http://file4.renrendoc.com/view6/M00/33/00/wKhkGWetyNKAIzfyAAEruWbpqK06215.jpg)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Shell脚本编程基础目录/CONTENTS01编写和执行Shell脚本02使用变量和参数03使用条件判断和循环控制结构编写和执行Shell脚本初识shellshell中文解释是贝壳shell的作用:解释执行用户输入的命令或程序等用户输入一条命令,shell就解释一条键盘输入命令,Linux给与响应的方式,称之为交互式shell是一块包裹着系统核心的壳,处于操作系统的最外层,与用户直接对话,把用户的输入,解释给操作系统,然后处理操作系统的输出结果,输出到屏幕给与用户看到结果。编写和执行Shell脚本什么是shell脚本当命令或者程序语句写在文件中,我们执行文件,读取其中的代码,这个程序文件就称之为shell脚本。在shell脚本里定义多条Linux命令以及循环控制语句,然后将这些Linux命令一次性执行完毕,执行脚本文件的方式称之为,非交互式方式。windows中存在*.bat批处理脚本Linux中常用*.sh脚本文件编写和执行Shell脚本Shebang计算机程序中,shebang指的是出现在文本文件的第一行前两个字符#!在Unix系统中,程序会分析shebang后面的内容,作为解释器的指令,例如以#!/bin/sh开头的文件,程序在执行的时候会调用/bin/sh,也就是bash解释器以#!/usr/bin/python开头的文件,代表指定python解释器去执行以#!/usr/bin/env解释器名称,是一种在不同平台上都能正确找到解释器的办法编写和执行Shell脚本执行shell脚本的方式bashscript.sh或shscripte.sh,文件本身没权限执行,没x权限,则使用的方法,或脚本未指定shebang,重点推荐的方式使用绝对/相对路径执行脚本,需要文件含有x权限sourcescript.sh或者.script.sh,代表执行的含义,source等于点.少见的用法,sh<script.sh脚本语言shell脚本语言属于一种弱类型语言无需声明变量类型,直接定义使用强类型语言,必须先定义变量类型,确定是数字、字符串等,之后再赋予同类型的值centos7系统中支持的shell情况,有如下种类默认的sh解释器使用变量和参数使用变量和参数shell变量
变量定义与赋值,注意变量与值之间不得有空格name="超哥"变量名变量类型,bash默认把所有变量都认为是字符串bash变量是弱类型,无需事先声明类型,是将声明和赋值同时进行使用变量和参数使用变量和参数变量替换/引用变量名规则名称定义要做到见名知意,切按照规则来,切不得引用保留关键字(help检查保留字)只能包含数字、字母、下划线不能以数字开头不能用标点符号变量名严格区分大小写使用变量和参数使用变量和参数变量的作用域本地变量,只针对当前的shell进程pstree检查进程树环境变量,也称为全局变量,针对当前shell以及其任意子进程,环境变量也分自定义、内置两种环境变量局部变量,针对在shell函数或是shell脚本中定义位置参数变量:用于shell脚本中传递的参数特殊变量:shell内置的特殊功效变量$?0:成功1-255:错误码使用变量和参数使用变量和参数自定义变量变量赋值:varName=value变量引用:${varName}、$varName双引号,变量名会替换为变量值单引号,识别为普通字符串使用变量和参数使用变量和参数在Shell脚本中,我们可以使用位置参数来捕获命令行参数。以下是如何在Shell脚本中使用位置参数:#!/bin/bash#使用位置参数echo"Hello,$1!"在上述脚本中,我们使用$1来引用第一个命令行参数。如果你运行脚本并传递一个参数,例如:./myscript.shWorld脚本会打印出Hello,World!。使用条件判断和循环控制结构条件判断在Shell脚本中,我们通常使用if、elif、else和fi关键字来构造条件判断语句。#!/bin/bashnumber=10if[$number-eq10];thenecho"Numberis10."elif[$number-lt10];thenecho"Numberislessthan10."elseecho"Numberisgreaterthan10."fi在上面的脚本中,-eq用于判断等于,-lt用于判断小于,类似地,-gt可以用于判断大于。使用条件判断和循环控制结构循环控制结构在Shell脚本中,我们常用的循环控制结构有for和while循环。下面是一个for循环的基本示例:#!/bin/bashfornumberin12345doecho"Numberis$number."done在上面的脚本中,for循环会依次将1,2,3,4,5赋值给变量number,然后执行一次循环体。使用条件判断和循环控制结构循环控制结构下面是一个while循环的基本示例:#!/bin/bashnumber=1while[$number-le5]doecho"Numberis$number."number=$((number+1))done在上面的脚本中,while循环会在条件满足时(即number小于或等于5时)反复执行循环体。在循环体中,我们每次都将number增加1,当number大于5时,循环停止。使用条件判断和循环控制结构循环控制结构分析nginx日志下面是一个while循环的基本示例:#!/bin/bashsum=0exec<$1whilereadlinedosize=`echo$line|awk'{print$10}'`#awk截取数据大小expr$size+1&>/dev/null#判断是否是数字if[$?-ne0];thencontinuefi((sum=sum+$size))#循环的值,累加且赋值doneecho"${1}:total:${sum}bytes=`echo$((${sum}/1024))`KB"./while_nginx_access.sh/var/log/nginx/access.log任务自动化目录/CONTENTS01编写用于自动化的Shell脚本02计划任务03监控和调试Shell脚本编写用于自动化的Shell脚本编写用于自动化的Shell脚本每天定期备份一个目录到另一个目录中#!/bin/bash#源目录和备份目录SOURCE_DIR="/path/to/source"BACKUP_DIR="/path/to/backup"#获取当前日期DATE=$(date+%Y%m%d)#创建新的备份目录mkdir-p"$BACKUP_DIR/$DATE"#复制文件cp-R"$SOURCE_DIR/*""$BACKUP_DIR/$DATE"#打印出完成的消息echo"Backupof$SOURCE_DIRcompletedon$DATE."编写用于自动化的Shell脚本编写用于自动化的Shell脚本每天定期备份一个目录到另一个目录中脚本首先定义了源目录和备份目录的路径。然后,它获取当前的日期,并使用这个日期来创建一个新的备份目录。接着,它使用cp命令来复制源目录中的所有文件和目录到新的备份目录中。最后,它打印出一条消息,表示备份已完成。为了让这个脚本自动运行,你可以将其添加到你的crontab文件中。你可以使用crontab-e命令来编辑你的crontab文件。然后,你可以添加一个类似于以下的行:02***/path/to/your/script.sh这个行表示你的脚本将在每天凌晨2点运行。02***是一个cron表达式,表示“在每小时的第0分钟和每天的第2小时”运行命令。在这个表达式后面的/path/to/your/script.sh是你的脚本的路径。编写用于自动化的Shell脚本编写用于自动化的Shell脚本每100分钟自动检查公网ip地址,如果发生变化就向指定的邮箱发送公网ip地址#!/bin/bash#设置旧的IP地址变量old_ip=""#设置收件人邮箱recipient="330317@163.com"#函数:发送电子邮件send_email(){localsubject="NewExternalIPAddress"localbody="ThenewexternalIPaddressis:$1"echo"$body"|mail-s"$subject""$recipient"}#无限循环,每10分钟执行一次whiletruedo#获取当前的外网IP地址current_ip=$(curl-sifconfig.me)#检查当前IP是否与旧IP相同if[["$current_ip"!="$old_ip"]];then#发送邮件send_email"$current_ip"#更新旧IP为当前IPold_ip="$current_ip"fi#等待10分钟sleep6000done编写用于自动化的Shell脚本编写用于自动化的Shell脚本计划任务计划任务cron是一个非常强大的工具,用于在预定的日期和时间执行命令或脚本,实现任务的自动化。编辑crontab文件要创建或编辑一个crontab文件,你可以使用crontab-e命令。这将在默认编辑器中打开一个新的crontab文件。编写cron任务每个cron任务都是crontab文件中的一行,包含六个字段,如下所示计划任务计划任务如果你想在每天的早上5点运行一个脚本,你可以添加以下行:05***/path/to/your/script.sh计划任务计划任务查看crontab文件要查看当前用户的crontab文件,你可以使用crontab-l命令。删除crontab文件要删除当前用户的crontab文件,你可以使用crontab-r命令。系统的crontab文件除了用户的crontab文件之外,系统还有一个/etc/crontab文件和/etc/cron.d目录,用于存储系统级的cron任务。这些任务可以被所有用户看到,但只能由root用户编辑。计划任务计划任务检查crond服务是否运行systemctlis-activecrondps-ef|grepcrond定时任务相关的文件/var/spool/cron定时任务的配置文件所在目录/var/log/cron定时任务日志文件/etc/cron.deny定时任务黑名单计划任务计划任务每晚0点整,把站点目录/var/www/html下的内容打包备份到/data目录下#catbak.sh#!/bin/bashcd/var/www&&\/bin/tar-zcf/data/bak_$(date+%F).tar.gz./html创建定时任务crontab-e写入0000***/bin/sh/server/scripts/bak.sh>/dev/null2>&1#解释>/dev/null2>&1代表把所有输出信息重定向到黑洞文件>是重定向符号/dev/null是黑洞文件2>&1代表让标准错误和标准输出一样此命令表示将脚本执行的正常或者错误日志都重定向到/dev/null,也就是什么都不输出>/dev/null2>&1等价于1>/dev/null2>/dev/null等价于&>/dev/null监控和调试Shell脚本监控和调试Shell脚本1、使用Bash的调试模式Bash的调试模式可以通过在启动脚本时使用-x参数来启用。在这种模式下,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年个人名下车辆抵押借款合同范文
- 2025年公共场所消防设计与施工协议
- 2025年企业租赁生产区域安全策划管理协议
- 2025年玻璃冷加工设备项目提案报告模板
- 2025年个人信用借款合同保证书
- 2025年车载型X萤光测试仪(XRF)项目立项申请报告
- 2025年图像存储与通讯系统(PACS)项目立项申请报告模范
- 2025年分手协议标准化简易版指南
- 2025年园林景观石申请销售合作协议
- 2025年伴侣保障协议
- 公文与公文写作课件
- 车削成形面和表面修饰加工课件
- 读书分享-《教育的情调》
- 基于振动信号的齿轮故障诊断方法研究
- 义务教育物理课程标准(2022年版word版)
- 医疗器械分类目录2002版
- DB11_T1713-2020 城市综合管廊工程资料管理规程
- 气管套管滑脱急救知识分享
- 特种设备自检自查表
- 省政府审批单独选址项目用地市级审查报告文本格式
- 往复式压缩机安装方案
评论
0/150
提交评论