shell脚本的应用以及相关的命令


1)Shell脚本的作用:主要解决服务器的自动化维护工作,减轻管理员的工作量。

 

2)如果向提高shell脚本的编写速度,必须要熟练使用vi编辑器的各种快捷键

3)执行脚本的方式:./是第一种,但必须要有x的执行权限

              bash 跟脚本的文件名  可以不用x执行权限

    source 跟脚本的文件名  同bash一样不需要x执行权限

一、shell脚本基础知识

1、编制第一个shell脚本

1)Vi  first.sh

android10 开机运行shell脚本 安卓shell脚本_开发工具



2)在脚本文件中输入如下内容

进入到跟下的boot目录,并查看所在

的位置和查看权限

android10 开机运行shell脚本 安卓shell脚本_数据库_02


3)设置执行权限并执行


android10 开机运行shell脚本 安卓shell脚本_数据库_03



2、为脚本添加注释,友好输出,更容易读懂。

1)Vi  first.sh

android10 开机运行shell脚本 安卓shell脚本_数据库_04



2)./first.sh执行脚本之后如下

android10 开机运行shell脚本 安卓shell脚本_开发工具_05



3、重定向操作

1)>表示重定向输出,>>表示重定向追加

android10 开机运行shell脚本 安卓shell脚本_重定向_06



1)重定向输入,<表示重定向输入

Vim pass.txt

在文件中添加123456

然后执行passwd  --stdin jerry  < pass.txt

android10 开机运行shell脚本 安卓shell脚本_shell脚本_07



3)错误重定向,可用来收集程序执行的错误信息,为排错提供依据,

例如:执行以下操作可以将使用tar命令备份时出现的错误信息保存到error.log文件中

android10 开机运行shell脚本 安卓shell脚本_重定向_08



4)&>操作符可以将两类输出信息保存到同一个文件

例如,在编译源码包的自动化脚本中,若要忽略make,make install的操作的过程信息

可以将其定向到空文件/dev/null

首先下载httpd软件到本机,然后执行Vim httpd_install.sh,并输入如下内容:

(设置权限chmod  +x  httpd_install.sh

最后执行./httpd_install.sh)

android10 开机运行shell脚本 安卓shell脚本_shell_09




4、管道操作

例子:使用grep命令查询使用/bin/bash作为shell的用户名称时

会输出符合条件的整行内容,在此基础上可以结合管道操作与Awk命令做进一步过滤

只输出用户名和登录shell列。

1)提取之前的正常效果

android10 开机运行shell脚本 安卓shell脚本_数据库_10


1)提取之后的效果,只显示用户名和shell列

android10 开机运行shell脚本 安卓shell脚本_shell_11


1)再例如:显示磁盘已用的百分比

android10 开机运行shell脚本 安卓shell脚本_shell_12


二、使用shell变量

1、自定义变量:只在自己的shell环境中有效

1)定义新的变量和引用变量

Product=benet

Versinotallow=5.0


android10 开机运行shell脚本 安卓shell脚本_重定向_13


2、变量赋值的特殊操作

1)双引号的作用:赋值的内容包含空格时,例如:

android10 开机运行shell脚本 安卓shell脚本_重定向_14


2)单引号的作用:赋值的内容中包含”$”,  ““” , “ \ ”等具有特殊含义的字符时


android10 开机运行shell脚本 安卓shell脚本_开发工具_15


2)反撇号(`)的作用:用于将某个命令的输出结果赋值给变量,例如:


android10 开机运行shell脚本 安卓shell脚本_shell脚本_16


2)$()的作用:可以代替反撇号,解决嵌套问题,因为反撇号不能实现嵌套,

例如:查询提供useradd命令程序的软件包所安装的配置文件位置.


android10 开机运行shell脚本 安卓shell脚本_shell脚本_17


2)read命令的作用:用来提示用户输入信息,例如:


android10 开机运行shell脚本 安卓shell脚本_开发工具_18


3、设置变量的作用范围

新定义的变量只在当前shell有效,如果想进入新的shell环境同样有效

就需要使用export命令将变量导出为“全局变量”

android10 开机运行shell脚本 安卓shell脚本_shell_19



也可以在export导出全局变量的同时,也可以为变量赋值,例如:


android10 开机运行shell脚本 安卓shell脚本_开发工具_20



3、变量的运算


android10 开机运行shell脚本 安卓shell脚本_数据库_21


android10 开机运行shell脚本 安卓shell脚本_重定向_22


三、特殊的shell变量

1、环境变量

环境变量系统安装好了就存在,不用创建,可以直接使用,我们先查看一下:


android10 开机运行shell脚本 安卓shell脚本_开发工具_23


我们可以把脚本直接添加到$PATH搜索路径中去

这样执行脚本的时候就不用加./了


android10 开机运行shell脚本 安卓shell脚本_shell脚本_24


android10 开机运行shell脚本 安卓shell脚本_shell脚本_25


环境变量的全局配置文件为/etc/profile,作用于所有用户

例如:将历史记录命令条数改为200条,只针对root用户

Vim  /root/.bash_profile


android10 开机运行shell脚本 安卓shell脚本_重定向_26


只需要添加上面的最后一行

然后执行source  /root/.bash_profile使之生效。


android10 开机运行shell脚本 安卓shell脚本_shell脚本_27


1、位置变量,例如求两个数的和

Vi 


android10 开机运行shell脚本 安卓shell脚本_重定向_28



android10 开机运行shell脚本 安卓shell脚本_shell脚本_29


1、预定义变量,系统安装好之后就有,不能创建,只能使用

例如:$#表示命令行中位置参数的个数,$*表示所有位置参数的内容

$?表示前一条命令执行后的返回状态,返回0表示正确

$0表示当前执行的脚本或程序的名称。

例如:制作备份数据脚本,vi


android10 开机运行shell脚本 安卓shell脚本_shell_30




执行脚本./,备份两个文件


android10 开机运行shell脚本 安卓shell脚本_shell_31


查看备份结果


android10 开机运行shell脚本 安卓shell脚本_开发工具_32



四:

1、实验目标:远程备份mysql服务器的数据库

2、实验环境:

一共2台mysql服务器A和B,在B上远程备份A上的数据库

在A上建立数据库google和baidu,注意在防火墙上开启3306端口


1、实验拓扑:


android10 开机运行shell脚本 安卓shell脚本_shell脚本_33





1)在A上建立数据库


android10 开机运行shell脚本 安卓shell脚本_shell脚本_34


1)在A上建立一个建立一个专用的数据库用户,这里我使用root账户,

授予root账户对可以通过远程主机192.168.1.2连接A


android10 开机运行shell脚本 安卓shell脚本_开发工具_35


1)在备份主机B上备份测试


android10 开机运行shell脚本 安卓shell脚本_开发工具_36


查看已经备份成功

android10 开机运行shell脚本 安卓shell脚本_shell脚本_37



1)在备份主机B上编写脚本,之前需要创建备份目录

mkdir  -p  /opt/beifen

然后编写脚本vi 


大家注意把上图中的倒数第六行neme改为name


android10 开机运行shell脚本 安卓shell脚本_重定向_38



5)执行备份脚本

./



6)查看备份结果

android10 开机运行shell脚本 安卓shell脚本_重定向_39


5、设置计划任务

Crontab  -e

android10 开机运行shell脚本 安卓shell脚本_shell脚本_40




android10 开机运行shell脚本 安卓shell脚本_重定向_41

并重启计划任务服务。至此远程备份MySQL服务器的配置完成。









现在在介绍shell脚本更多的应用

以上介绍了shell脚本的应用和说明。(不一一说明了)

android10 开机运行shell脚本 安卓shell脚本_shell_42


android10 开机运行shell脚本 安卓shell脚本_shell脚本_43


android10 开机运行shell脚本 安卓shell脚本_shell脚本_44


android10 开机运行shell脚本 安卓shell脚本_开发工具_45


android10 开机运行shell脚本 安卓shell脚本_shell_46

android10 开机运行shell脚本 安卓shell脚本_重定向_47

android10 开机运行shell脚本 安卓shell脚本_重定向_48

android10 开机运行shell脚本 安卓shell脚本_shell_49

android10 开机运行shell脚本 安卓shell脚本_开发工具_50

android10 开机运行shell脚本 安卓shell脚本_数据库_51


android10 开机运行shell脚本 安卓shell脚本_数据库_52


android10 开机运行shell脚本 安卓shell脚本_重定向_53


android10 开机运行shell脚本 安卓shell脚本_开发工具_54

android10 开机运行shell脚本 安卓shell脚本_开发工具_55

android10 开机运行shell脚本 安卓shell脚本_重定向_56

android10 开机运行shell脚本 安卓shell脚本_开发工具_57

android10 开机运行shell脚本 安卓shell脚本_开发工具_58

android10 开机运行shell脚本 安卓shell脚本_重定向_59

android10 开机运行shell脚本 安卓shell脚本_shell_60