shell概览
一、shell能做什么
1.自动化系统初始化(update,软件安装,时区设置,安全策略...)
2.自动化批量软件部署程序(LAMP/LNMP/Tomcat/Nginx)
3.管理应用程序(KVM,集群管理扩容,MySQL,DELLR720批量RAID)
4.日志分析处理程序(PV,UV,200,!200,top100,grep/awk)
5.自动化备份恢复程序(MySQL完全备份/增量+Crond)
6.自动化管理程序(批量远程修改密码,软件升级,配置更新)
7.自动化信息采集及监控程序(收集系统/应用状态信息,CPU,Mem,Disk,Net,TCP Status,Apache,MySQL)
8.配合Zabbix信息采集(收集系统/应用状态信息,CPU,Mem,Disk,Net,TCP Status,Apache,MySQL)
9.自动化扩容(增量云主机——>业务上线)
zabbix监控CPU 80%+|-50% Python API AWS/EC2(增加/删除云主机)+Shell Script(业务上线)
10.俄罗斯方块,打印三角形,打印圣诞树,打印五角星,运动的小火车,坦克大战,排序算法实现
11.Shell理论上将可以做任何事(一切取决业务需求)
程序语言执行:
C —— 编译 —— 二进制机器码(CPU可以直接执行,不用再处理,x86复杂指令集,Power精简指令集,APM) (灵活性低,修改需要重新编译)
Java —— 编译 —— 字节码(只能被Java的虚拟机执行 JDK)Tomcat/Hadoop (Java可移植性强)
Shell —— 解释(需要处理逻辑) (/usr/bin/bash)
perl —— 解释 (/usr/bin/perl)
expect ——解释 (/usr/bin/expect)
Python —— 解释 —— (/usr/bin/Python)
——编译 —— 字节码 (只能被Python虚拟机执行)
程序是由那些组成的:逻辑+数据
#!后面跟解释执行编译器
- 支持缩进 EOF定义一个字符
希望脚本中的东西影响当前shell,就用 . 或者source 执行
bash shell
一、shell技术
1. shell特性
2. shell变量
3. shell条件测试
4. shell数值运算
5. 流控、循环
if
case
for
while
until
break
continue
exit
shift
array
function
6. 企业项目
二、 shell?命令解释器
shell 命令 cp ls date
Linux 支持的shell
cat /etc/shell
chsh -l
系统级登录时执行 用户级离开时执行
三、GUN/bash shell 特点
1. !number 执行历史命令 例如!120
!string 补齐以xx开头的命令 例如!da
!$ 上一个命令的最后一个参数
!! 上一个命令
ctrl+R 搜索历史命令
2. ctrl + D 退出
ctrl +A 光标移动到首
ctrl +E 光标移动到尾部
ctrl +D 删除光标当前所在字符
ctrl + U 删除光标之前的所有字符
ctrl +L 清屏
5.
& 后台
nohup 离开终端后 后台程序依然在
screen 保存回话
6. 每打开一个文件,都会有一个文件描述符
0,1,2 > >> 2> 2>> 2>&1 &> cat <<EOF
变量赋值
e