第一章: shell快速入门:
一、运维简介:
1.运维简介以及企业中的那些事:
2、简单的运维知识
- 规划: 需要多少资源来支持项目的运行;
- 管理: 项目运行过程中的所有内容都管理起来;
- 流程规范: 所有操作都形成只读,提高工作效率;
- 平台: 大幅度提供工作效率;
- 监控: 实时查看项目运行状态指标;
- 告警: 状态指标异常,高职工作人员处理;
- 安全: 网站运营安全措施;
- 优化: 保证用户访问网站体验好;
2.1 自动化运维: 就是将所有的运维工作都是用自动化的方式来实现
- 实现自动化的方式很多,常见的方式:工具和脚本。
- 工作中常见的脚本是shell脚本 和 其他开发语言脚本
- shell脚本就是shell编程的一种具体实现;
二、shell简介:
1.什么是shell:
- shell的定义: 在计算机科学中,shell就是一个命令解释器;
- shell是位于操作系统和应用程序之间,是它们两者最重要的接口,shell负责把应用程序 的输入命令信息解释给操作系统,将操作系统指令处理后的结果解释给应用程序.
- shell位置图:
- 总结来说,shell就是操作系统和应用程序之间的一个命令翻译工具.
2.shell的分类:
- 基本上shell分两大类: 图形化界面shell和命令行shell
- 图形界面shell:图形界面shell就是常说的桌面
- 命令行shell:
- windows系统: cmd.exe命令提示符
- linux: sh / csh / ksh / bash / …
常说的shell是命令行式的shell,在工作中常用的是linux的bash.
- shell:https://baike.baidu.com/item/shell/99702
3.查看系统shell信息:
- 查看当前系统的shell类型:
echo $SHELL
/bin/bash
- 查看当前系统环境支持的shell:
cat /etc/shells
/bin/sh
/bin/bash
/bin/rbash
/bin/dash
4.shell脚本:
-
shell使用方式:
- 手工方式: 手工敲击键盘,在shell的命令行输入命令,按Enter后,执行通过键盘输入的命令,然后shell返回并显示命令执行的结果, 逐行输入命令、逐行进行确认执行;
- 脚本方式: 就是说把手工执行的命令a,写到一个脚本文件b中,然后通过执行脚本b,达到执行命令a的效果.
-
shell脚本定义: 当可执行的Linux命令或语句不在命令行状态下执行,而是通过一个文件执行时,将这个文件为shell脚本。
5.shell脚本示例:
5.1 创建临时shell脚本文件test.sh, 注意以.sh结尾
#!/bin/bash
# 这是临时shell脚本
echo "nihao"
echo "test"
5.2 脚本执行效果:
6.shell的优缺:
shell的优点:
- 存在时间长.拥有较多的积累;
- 编写简单;
- 对环境依赖小;
shell的劣势: - 无法失效件复杂的功能;
- 不支持线代编程语言的高级特性: 面向对象;
第二章: shell基础知识:
一、shell脚本:
1.创建脚本
脚本创建工具:(命令行)
创建校本的常见编辑器是:vi/vim
笔者个人习惯使用:nano
脚本命名:
- shell脚本的命名简单来说就是要有意义,方便通过 脚本名,来知道这个文件是干什么用的;
- 文件名以.sh结尾;
脚本内容:
- 首行指定解释器: #!/bin/bash;
- 命令罗列和语法套用;
注释内容:
- 单行注释:
除了首行的#不是注释外,其他所有行内容,只要首个字符是#,那么就表示该行是注释
#!/bin/bash
echo '1'
# echo '2' # 这一行就表示注释
echo '3'
- 多行注释:
多行注释有两种方法::<<! … ! 和 :<<字符 … 字符
#!/bin/bash
echo '1'
:<<! echo '2'
echo '3'
echo '4'
!
echo '5'
2. 脚本执行:
shell执行大方式:
shell脚本的执行通常可以采用以下几种方式:
bash /path/to/script-name or /bin/bash /path/to/script-name
/path/to/script-name or ./script-name (注意是在当前目录下执行脚本)
source script-name or . script-name (注意"."后面有空格)
执行方式说明:
- 脚本文件本身没有可执行权限或脚本首行没有命令解释器时使用的方法, 推荐使用bash执行
- 脚本文件具有可执行权限时使用;
- 使用source或者.点号,加载shell脚本文件内容,使shell脚本内容环境和当前用户环境一致。
区别:
source或者.点号与其他执行方式的比较
test.sh 脚本内容如下:
#!/bin/bash
ps
终端执行命令如下:
python@ubuntu:~/Desktop$ ps # 返回当前终端运行的进程
PID TTY TIME CMD
34863 pts/1 00:00:00 bash # 当前终端开启的bash进程
34891 pts/1 00:00:00 ps
python@ubuntu:~/Desktop$ bash test.sh
PID TTY TIME CMD
34863 pts/1 00:00:00 bash # 当前终端开启的bash进程
34894 pts/1 00:00:00 bash # 执行bash test.sh命令时开启了一个子进程
34895 pts/1 00:00:00 ps
python@ubuntu:~/Desktop$ source test.sh
PID TTY TIME CMD
34863 pts/1 00:00:00 bash # 只有当前终端开启的bash进程,执行
34900 pts/1 00:00:00 ps
test.sh 脚本内容如下:
#!/bin/bash
echo $user
终端执行命令如下:
python@ubuntu:~/Desktop$ user=python # 当前终端定义变量
python@ubuntu:~/Desktop$ echo $user # 打印变量
python
python@ubuntu:~/Desktop$ bash test.sh # 使用bash方式会开子进程,不能使用当前终端定义的变量
python@ubuntu:~/Desktop$ source test.sh # 使用source方式不会开子进程,能使用当前终端定义的变量
python
总结: source后者点号(.)执行方式不会开启子进程,能共享当前终端定义的变量,其他执行方式会开启子进程.
执行机制:
3. 脚本开发规范:
- 脚本命名要有意义,文件后缀是.sh;
- 脚本文件首行是而且必须是脚本解释器;
#!/bin/bash
...
-
脚本文件解释器后面要有脚本的基本信息等内容;