自动化与运维入门(一)自动化运维与shell简介

自动化与运维可以做什么

消除无效率 - 运维工作的手动工作,如果可以实现自动化,将显著提升效率水平。

减少错误 - 即使最谨慎的人,也会犯错,尤其是面对着重复性工作。通过运维自动化工具来完成这样的工作,结果是显而易见的,错误率将大大降低。

最大化员工使用 - 通过运维自动化,运维专家们的经历可以集中在更复杂、更有战略意义的业务问题上。同时也降低了雇佣更多员工来应对工作量增加的需求。同样一批人,有自动化运维,就有更大的能量来创造价值。

提高满意度水平 - 自动化运维工具帮助IT运维,为内部和外部客户提供高水平支持。无论是通过提供自助服务选项,还是大幅缩短时间(最多达90%)来减少联系和等待服务台的需求,自动化运维让我们可以更好得拥抱SLA。

降低成本 - 系统中断、人为错误、重复工作,会导致不菲的费用和代价,而自动化运维几乎可以将这些成本完全消除。

为了获得最佳的结果,运维应该将自动化最为其“最佳实践”的一部分,尽可能多的实施自动化流程。除了成本和费用上的减少,无数例子证明,其业务敏捷性和整体服务提供也将呈指数级增长。

以上部分来自https://blog.csdn.net/zyqduron/article/details/77744793

运维人员眼中的运维
自动化与运维入门(一)自动化运维与shell简介_第1张图片

自动化运维的好处是如此之明显,而自动化运维的实现基础便是shell

一、shell简介

1、什么是shell

shell的定义: 在计算机科学中,Shell就是一个命令解释器。
shell是位于操作系统和应用程序之间,是他们二者最主要的接口,shell负责把应用程序的输入命令信息解释给操作系统,将操作系统指令处理后的结果解释给应用程序。
自动化与运维入门(一)自动化运维与shell简介_第2张图片
总结:一句话,shell就是在操作系统和应用程序之间的一个命令翻译工具

2、shell的分类

基本上shell分两大类:图形界面shell和命令行shell 
图形界面shell:图形界面shell就是我们常说的桌面  
命令行式shell:

  • windows系统: cmd.exe 命令提示字符
  • linux系统: sh / csh / ksh / bash / …

我们常说的shell是命令行式的shell,在工作中常用的是linux系统下的bash
自动化与运维入门(一)自动化运维与shell简介_第3张图片

3、查看系统的shell信息

  • 查看当前系统的shell类型
python@ubuntu:~$ echo $SHELL
/bin/bash

  • 查看当前系统环境支持的shell
python@ubuntu:~$ cat /etc/shells
/bin/sh
/bin/dash
/bin/bash
/bin/rbash

4、shell脚本介绍

shell使用方式

  • 手工方式:手工敲击键盘,在shell的命令行输入命令,按Enter后,执行通过键盘输入的命令,然后shell返回并显示命令执行的结果, 逐行输入命令、逐行进行确认执行
  • 脚本方式: 就是说我们把手工执行的命令a,写到一个脚本文件b中,然后通过执行脚本b,达到执行命令a的效果.
  • shell脚本定义: 当可执行的Linux命令或语句不在命令行状态下执行,而是通过一个文件执行时,我们将这个文件为shell脚本。

5、shell脚本示例

创建临时shell脚本文件 hello.sh

python@ubuntu:~/Desktop$ gedit hello.sh

在文件中写入

#!/bin/bash

echo "hello world"

输出结果:成功得在终端中输出hello world

python@ubuntu:~/Desktop$ ./hello.sh 
hello world

二、shell基础知识

1 shell脚本

1.1 创建脚本

脚本创建工具:

  • 创建脚本的常见编辑器是 vi/vim

脚本命名:

  • shell脚本的命名简单来说就是要有意义,方便我们通过脚本名,来知道这个文件是干什么用的

脚本内容:

  • 各种可以执行的命令

注释内容:

  • 单行注释:
    除了首行的#不是注释外,其他所有行内容,只要首个字符是#,那么就表示该行是注释
#!/bin/bash
echo '1'
# echo '2'           # 这一行就表示注释
echo '3'
  • 多行注释
    多行注释有两种方法::<<字符 ... 字符
    解释一下,首先":“在shell中的意思"什么都不做”,而>>符号代表重定向,用字符作为边界,合起来就是表示"这个边界内的内容什么都不做",作为边界的字符可以说字母和特殊字符,但是通常为了不和注释中的内容混淆,都以特殊字符作为边界
#!/bin/bash
echo '1'
:<<! echo '2'
echo '3'
echo '4'
!
echo '5'

1.2 脚本执行

Shell脚本的执行通常可以采用以下几种方式

# 1、使用bash执行
bash /path/to/script-name  或   
/bin/bash /path/to/script-name    (强烈推荐使用) 或
# 2、脚本文件具有可执行权限的自己执行
/path/to/script-name   或 
./script-name    (当前路径下执行脚本)
# 3、使用source或者.点号,加载shell脚本文件内容,使shell脚本内容环境和当前用户环境一致
source script-name  或 
. script-name    (注意“.“点号后面有空格)

注意:source或者.点号与其他执行方式的比较
1、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

2、source或者.点号执行方式能共享当前终端定义的变量

  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

1.3 脚本开发规范

(1)脚本命名要有意义,文件后缀是.sh

(2)脚本文件首行是而且必须是脚本解释器

#!/bin/bash

(3)脚本文件解释器后面要有脚本的基本信息等内容

(4)脚本文件中尽量不用中文注释

  • 尽量用英文注释,防止本机或切换系统环境后中文乱码的困扰
  • 常见的注释信息:脚本名称、脚本功能描述、脚本版本、脚本作者、联系方式等

(5)脚本文件常见执行方式:bash 脚本名

(6)脚本内容执行:从上到下,依次执行

(7)代码书写优秀习惯

  • 成对内容的一次性写出来,防止遗漏。
    如:()、{}、[]、’’、``、""
  • []中括号两端要有空格,书写时即可留出空格[ ],然后再退格书写内容
  • 流程控制语句一次性书写完,再添加内容

(8)通过缩进让代码易读(即该有空格的地方就要有空格)

你可能感兴趣的:(自动化运维)