shell脚本编写
shell脚本(shell script)又称Shell命令稿、程序化脚本,是一种计算机程序使用的文本文件,内容由
一连串的shell命令组成,经过Unix Shell直译其内容后运作(简而言之将一个或者多个命令写文件里执行)
[root@ITTLDOG /date/shell]
0
[root@ITTLDOG /date/shell]
echo $?
[root@ITTLDOG /date/shell]
0
1、Linux系统命令的堆积,按照编写的顺序执行
2、特定的格式+特定的语法+系统的命令=文件
3、文件结尾依照.sh为结尾
1、 基础的配置 系统的初始化 系统更新 内核调整 网络 时区 优化
2、安装软件程序 Nginx MySQL Redis Rsync NFS Docker k8s
3、 配置的变更 Nginx PHP Redis MySQL conf 配置文件的变更
4、 业务的部署 Shell配合Git、jenkins实现自动化的部署 代码上线 回滚
5、 日常备份 脚本备份+定时任务 企业的备份
6、 信息采集 Zabbix监控 + Shell取值 对硬件 系统状态 服务
7、 日志分析 ELK 取值 排序 去重 统计 分析
8、 服务的扩容或者缩容
扩容: 添加集群节点 监控CPU 负载 内存 >80% 触发的动作 脚本
缩容: 减少集群节点 监控CPU 负载 内存 <20% 触发的动作 把某一个节点进行移除
1、创建一个目录专门用于存放脚本
[root@ITTLDOG ~]
[root@ITTLDOG ~]
[root@ITTLDOG /date/shell]
/date/shell
2、强烈建议使用vi或者vim编辑器进行编写脚本
3、脚本最好以.sh结尾(因为好识别,工作的话脚本不建议用1.sh或者a.sh命名,涉及安全大厂会考核)
4、脚本的首行加上幻数,指定好具体的命令解释器进行解释脚本里的命令
[root@ITTLDOG /date/shell]
5、首行的
必须放置在脚本的首行,在其他行都表示注释
6、编写脚本的时候附带作者和版权信息(便于找到谁写的)
7、脚本注释
8、编写的过程中保持良好的习惯,使用成对的符号的时候 "" {} [] ()尽量一次编写完毕
9、成对的语法个格式,要一次编写完毕 if; then fi 、for i in do done
Shell脚本是从上到下、从左到右一次依次执行每一行的命令,执行完一条命令
之后,再执行下一条命令。如果在脚本中遇到镶嵌的子脚本,执行子脚本之后再
去执行父脚本未执行的内容。
1、bash script-name 或者 sh script-name
2、 source script-name 或者 . script-name
3、 path/script-name 或者 ./script-name
4、 cat script-name | bash
5、 bash < script-name 或者 sh < script-name
1、登录式和非登录式的区别
登录式Shell:通过用户和密码的方式进行登录进入的Shell
非登录式Shell:不需要用户和密码的方式进入的Shell bash
执行exit命令时,可以退出的是登录式Shell 不能退出的是非登录式shell
执行logout命令时, 只能退出登录式Shell,不能退出非登录式Shell
脚本就是一个非登录式Shell
非登录式Shell不会执行/etc/profile这个文件
2、Shell执行过程中的配置文件
/etc/profile
/etc/profile.d/*sh
/root/.bash_profile
/etc/bashrc
/root/.bashrc
3、登录式shell的配置文件执行顺序
/etc/profile
/etc/profile.d/*sh
.bash_profile
.bashrc
/etc/bashrc
4、非登录式Shell的配置文件的执行顺序
.bashrc
/etc/bashrc
/etc/profile.d/*sh