shell 脚本的应用以及相关的命令
1)Shell 脚本的作用: 主要解决服务器的自动化维护工作, 减轻管理员的工作量.
2) 如果向提高 shell 脚本的编写速度, 必须要熟练使用 vi 编辑器的各种快捷键
3) 执行脚本的方式:./ 是第一种, 但必须要有 x 的执行权限
bash 跟脚本的文件名 可以不用 x 执行权限
source 跟脚本的文件名 同 bash 一样不需要 x 执行权限
一, shell 脚本基础知识
1, 编制第一个 shell 脚本
1)Vi first.sh
2) 在脚本文件中输入如下内容
进入到跟下的 boot 目录, 并查看所在
的位置和查看权限
3) 设置执行权限并执行
2, 为脚本添加注释, 友好输出, 更容易读懂.
1)Vi first.sh
2)./first.sh 执行脚本之后如下
3, 重定向操作
1)> 表示重定向输出,>> 表示重定向追加
1) 重定向输入,< 表示重定向输入
Vim pass.txt
在文件中添加 123456
然后执行 passwd --stdin jerry <pass.txt
3) 错误重定向, 可用来收集程序执行的错误信息, 为排错提供依据,
例如: 执行以下操作可以将使用 tar 命令备份时出现的错误信息保存到 error.log 文件中
4)&> 操作符可以将两类输出信息保存到同一个文件
例如, 在编译源码包的自动化脚本中, 若要忽略 make,make install 的操作的过程信息
可以将其定向到空文件 / dev/null
首先下载 httpd 软件到本机, 然后执行 Vim httpd_install.sh, 并输入如下内容:
(设置权限 chmod +x httpd_install.sh
最后执行./httpd_install.sh)
4, 管道操作
例子: 使用 grep 命令查询使用 / bin/bash 作为 shell 的用户名称时
会输出符合条件的整行内容, 在此基础上可以结合管道操作与 Awk 命令做进一步过滤
只输出用户名和登录 shell 列.
1) 提取之前的正常效果
1) 提取之后的效果, 只显示用户名和 shell 列
1) 再例如: 显示磁盘已用的百分比
二, 使用 shell 变量
1, 自定义变量: 只在自己的 shell 环境中有效
1) 定义新的变量和引用变量
- Product=benet
- Version=5.0
2, 变量赋值的特殊操作
1) 双引号的作用: 赋值的内容包含空格时, 例如:
2) 单引号的作用: 赋值的内容中包含 "$", """," \ " 等具有特殊含义的字符时
2) 反撇号 (`) 的作用: 用于将某个命令的输出结果赋值给变量, 例如:
2)$() 的作用: 可以代替反撇号, 解决嵌套问题, 因为反撇号不能实现嵌套,
例如: 查询提供 useradd 命令程序的软件包所安装的配置文件位置.
2)read 命令的作用: 用来提示用户输入信息, 例如:
3, 设置变量的作用范围
新定义的变量只在当前 shell 有效, 如果想进入新的 shell 环境同样有效
就需要使用 export 命令将变量导出为 "全局变量"
也可以在 export 导出全局变量的同时, 也可以为变量赋值, 例如:
3, 变量的运算
三, 特殊的 shell 变量
1, 环境变量
环境变量系统安装好了就存在, 不用创建, 可以直接使用, 我们先查看一下:
我们可以把脚本直接添加到 $PATH 搜索路径中去
这样执行脚本的时候就不用加./ 了
环境变量的全局配置文件为 / etc/profile, 作用于所有用户
例如: 将历史记录命令条数改为 200 条, 只针对 root 用户
Vim /root/.bash_profile
只需要添加上面的最后一行
然后执行 source /root/.bash_profile 使之生效.
1, 位置变量, 例如求两个数的和
Vi adder2num.sh
1, 预定义变量, 系统安装好之后就有, 不能创建, 只能使用
例如:$# 表示命令行中位置参数的个数,$* 表示所有位置参数的内容
$? 表示前一条命令执行后的返回状态, 返回 0 表示正确
$0 表示当前执行的脚本或程序的名称.
例如: 制作备份数据脚本, vi mybak.sh
执行脚本./mybak.sh, 备份两个文件
查看备份结果
四:
1, 实验目标: 远程备份 mysql 服务器的数据库
2, 实验环境:
一共 2 台 mysql 服务器 A 和 B, 在 B 上远程备份 A 上的数据库
在 A 上建立数据库 google 和 baidu, 注意在防火墙上开启 3306 端口
1, 实验拓扑:
1) 在 A 上建立数据库
1) 在 A 上建立一个建立一个专用的数据库用户, 这里我使用 root 账户,
授予 root 账户对可以通过远程主机 192.168.1.2 连接 A
1) 在备份主机 B 上备份测试
查看已经备份成功
1) 在备份主机 B 上编写脚本, 之前需要创建备份目录
mkdir -p /opt/beifen
然后编写脚本 vi mysqlbak.sh
大家注意把上图中的倒数第六行 neme 改为 name
5) 执行备份脚本
./mysqlbak.sh
6) 查看备份结果
5, 设置计划任务
Crontab -e
并重启计划任务服务. 至此远程备份 MySQL 服务器的配置完成.
现在在介绍 shell 脚本更多的应用
以上介绍了 shell 脚本的应用和说明.(不一一说明了)
来源: http://www.bubuko.com/infodetail-2590910.html