什么是Shell
1.1 Shell 原理图
- Shell命令解释器
- Bash
- dash #Ubuntu man dash
- csh tcsh #unix
Shell
bash 红帽系列
dash ubuntu
csh tcsh unix
1.2.开发语言中程序代码的分类
- 编译型: 开发书写的代码 无法直接运行 需要编译(代码---->命令) C语言
- 解释型: 书写完成代码,通过命令执行 (shell脚本) shell 书写脚本 然后可以直接运
行
C —— 编译 —— 二进制机器码 (CPU X86 复杂指令集, Power 精简指令集,APM)
Java —— 编译 —— 字节码(Java 虚拟机 JDK) Tomcat/Hadoop
shell —— 解释 (/usr/bin/bash)
perl —— 解释 (/usr/bin/perl) expect —— 解释 (/usr/bin/expect)
Python —— 解释 ( /usr/bin/python)—— 编译 —— 字节码(Python 虚拟机)
程序是由哪些组程序: 逻辑 + 数据
1.3 Shell 能做什么
- 自动化批量系统初始化程序 (update,软件安装,时区设置,安全策略…)
- 自动化批量软件部署程序 (LAMP,LNMP,Tomcat,LVS,Nginx)
- 应用管理程序 (KVM,集群管理扩容,MySQL,DELLR720 批量 RAID)
- 日志分析处理程序(PV, UV, 200, !200, top 100, grep/awk)
- 自动化备份恢复程序(MySQL 完全备份/增量 + Crond)
- 自动化管理程序(批量远程修改密码,软件升级,配置更新)
- 自动化信息采集及监控程序(收集系统/应用状态信 CPU,Mem,Disk,Net,TCP Status,Apache,MySQL)
- 配合 Zabbix 信息采集(收集系统/应用状态信息 CPU,Mem,Disk,Net,TCP Status,Apache,MySQL)
- 自动化扩容(增加云主机——>业务上线)zabbix 监控 CPU 80%+|-50% Python API AWS/EC2(增加/删除云主机) + Shell Script(业务上线)
- 俄罗斯方块,打印三角形,打印圣诞树,打印五角星,运行小火车,坦克大战,排序算法实现
- Shell 可以做任何事(一切取决于业务需求)
书写规范
2.1 书写脚本
- 书写脚本 加上 第1行命令解释器
- 版权说明
- 不要加上中文
- 成对的符号 提前敲好
"" '' `` {} [ ] ( )
- 脚本文件名:尽量不要包含服务名称 看见文件名 知道脚本作用
Shbang
#!/bin/bash #指定脚本默认使用的命令解释器 第1行
# test by ncs 2019-11-18
.....
2.2 执行脚本
- 方法1 直接运行 需要加上 x权限 (用于系统执行脚本)
- 方法2 sh 执行
- 方法3 source 或 . 替你在当前环境中 执行1次脚本
在脚本中实现类似于 include (nginx)的功能
- 方法4 输入重定向方法