Shell 既是一种命令语言,又是一种程序设计语言,在中文中解释“外壳”的意思,就是操作系统的外壳。工作中我们通过shell命令来操作和控制操作系统,在Linux操作系统中的Shell命令就包括touch、cd、pwd、mkdir等等。总结来说,Shell是一个命令解释器,用户输入命时,shell解释器负责将命令解释给内核,内核对程序的运行或对计算机进行控制,最后处理完后将结果反馈给用户。
shell script 脚本就是由Shell命令组成的文件,这些命令都是可执行程序的名字,脚本不用编译即可运行。它通过解释器解释运行,因此速度相对来说就比较慢。
shell的分类:
- 登录式shell
- 非登录式shell
- 交互式shell
- 非交互式shell
2、Shell应用场景
1)、安装系统,自动化安装操作系统(kickstart、cobbler)底层shell;
2)、网络IP地址配置;
3)、初始化操作系统的操作
操作包括但不限于:
1、ntp时间同步;
2、YUM源更改;
3、SSHD服务端口更改;
4、SSH远程连接禁止DNS解析;
5、禁止root登陆;
6、关闭Selinux服务;
7、防火墙优化;
8、常用命令软件安装;
9、加大文件描述符;
10、中文字符集优化;
11、内核参数优化;
12、别名优化;
13、中文件权限管理设置(例如加上i、a)
等等
4)、服务安装
例如: Nginx、MySQL、PHP、Redis、MHA、Rsync、MongoDB、KVM、Zabbix、Kubernetes、Docker、ELK等等
5)、配置文件
例如nginx、PHP、MySQL等服务配置文件的统一配置等等
6)、启动服务(系统默认的就是shell脚本)
例如开源服务的启停、自主研发的程序启停等等!
7)、监控
zabbix(常用服务器的各种状态);cacti(监控流量);nagios(监控交换机、路由器)
8)、日志统计、日志切割、日志收集:三剑客等命令+shell脚本+定时任务
9)、数据备份:命令+shell监本+定时任务
3、shell编程
- 环境变量
- 条件是表达
- if判断
- for循环
- while循环
- case循环
- 数组
- 函数
4、Shell脚本的书写规范
1)、目录统一;
2)、shell脚本的结尾要以.sh
结尾;
3)、脚本的开头需要有解释器(/bin/bash或者/bin/sh);
4)、脚本中需要有作者、时间、作用等信息;
5)、脚本每行或者语句予以解释;
6)、shell中的文字尽量使用英文;
7)、成对的符号和语句一次性书写完毕(例如""、‘‘
)。
8)、缩进统一。