一、shell软件概念和应用场景


1) 学习Linux技术,不是为了学习系统安装、命令操作、用户权限、配置IP、网络管理,学习Linux技术重点:基于Linux系统部署和维护各种应用软件、程序(Apache、MYSQL、Redis、PHP、Nginx、Tomcat等);

2) 学习Linux技术,如果不懂SHELL编程,可以说不懂Linux,要想实现月薪过万,SHELL编程技能是运维人员必备的,那么SHELL编程到底是什么呢?
3) 通过Xshell和CRT远程连接Linux操作系统,默认会登陆到命令行终端,命令行终端提示符#、$,为什么要登陆命令行呢?其实可以直接登陆图形界面,最终用户是为了什么?为了能够控制和管理操作系统。
4) 而Linux操作系统核心是Linux内核(数以万计的代码组成的),默认用户是不能直接操作Linux内核的,借助第三方的工具:命令行、图形界面UI,默认登陆到Linux命令行终端,也称为SHELL命令行终端;
5) 用户基于SHELL命令行终端,可以输入各种Linux指令,当我们在SHELL命令行终端输入df –h命令按下Enter键时,Linux指令传递给SHELL(软件程序),经过SHELL解析,并且将解析之后内容传递给Linux内核,Linux内核接收以后会处理,处理完毕之后会将数据内容返回给SHELL,由SHELL经过解析最
终返回给用户终端;

6)通常将SHELL称为Linux内核的外壳,用于连接用户和Linux内核之间桥梁,将SHELL称为中间件,SHELL外壳程序有很多种类和版本,查看Linux操作系统SHELL类型和SHELL版本:

#查看Linux默认的SHELL种类;
echo $SHELL
#查看默认的SHELL种类版本;
/bin/bash --version

SHELL和SHELL编程概念有什么区别呢?

  • SHELL和SHELL编程是两个不同的概念,SHELL是用户和Linux内核之间沟通桥梁,而SHELL编程主要是基于SHELL解释器去编写各种指令或者代码;
  • SHELL编程一定要有SHELL(SHELL解释器),SHELL解释器是SHELL编程的基石,没有SHELL就没有SHELL编程;

7) SHELL编程的核心思想?
SHELL编程是将Linux单个指令或者多个指令按照一定的逻辑关系和顺序堆积在文本文件(脚本文件)中,文本文件中的指令会通过SHELL解释器去解析,最终实现某个具体的功能和需求;
8) SHELL编程的产物是SHELL脚本文件(以.sh结尾命名的),而SHELL脚本文件是由单个命令或者多个命令堆积而成的,SHELL脚本中命令会通过SHELL解释器去解析和执行;

9) SHELL编程的意义和用途?

  • 可以将手工重复的操作写入脚本文件,下次操作变得简单、快捷;
  • 可以将繁杂的工作任务变成简单化、自动化的操作流程;
  • 可以减轻运维人的工作量,提高运维人员的工作效率;
  • 可以加快企业自动化运维的进程和脚步;

二、SHELL编程开发Nginx WEB源码部署脚本


1) SHELL编程是将手工操作的指令按照一定顺序和逻辑关系堆积在脚本文件中,脚本文件中指令会以SHELL解释器去解析,从而完整最终的功能和需求;

2) Nginx WEB软件部署方式有两种:基于YUM二进制方式,基于MAKE源码编译方式,此处采用MAKE源码编译方式;

  • 基于YUM二进制方式

部署方式简单、快捷、高效,可以自动校验软件包的正确性,可以自动解决软件包之间的依赖关系,可以自动安装软件并且设置为系统服务,不能自定义软件特定的功能和模块,安装之后的文件和目录相对比较分散,不便于后期的管理和维护;

  • 基于MAKE源码编译方式

部署方式复杂、繁琐、低效,不能自动校验软件包的正确性,不能自动解决软件包之间的依赖关系,不能自动安装软件并且设置为系统服务,可以自定义软件特定的功能和模块,安装之后的文件和目录相对比较统一,便于后期的管理和维护;
3) 基于MAKE源码编译Nginx WEB软件,首先从Nginx官网下载最新稳定版本软件包:Nginx-1.14.2.tar.gz,下载地址:
wget -c http://nginx.org/download/nginx-1.14.2.tar.gz
4) 因为Nginx软件包是基于tar工具打包和压缩的,通过tar工具解压缩,解压缩的指令:

#解压nginx软件包;(-x解压,-z gzip属性,-v详细信息,-f文件属性)
tar -xzvf nginx-1.14.2.tar.gz
#进入Nginx源码目录;
cd nginx-1.14.2

5) 预编译,./configure --prefix=/usr/local/nginx/ --user=www --group=www
主要是检测Linux系统安装该软件所需的依赖环境、库文件,检测Linux系统是否存在GCC编译器(C、C++、G++、GO、JAVA等),可以自定义软件安装的路径和特定功能&模块,最终会生产Makefile文件;
6) 编译,make
基于make编译工具,读取Makefile文件,通过GCC编译器将软件包中的源代码文件编译生成二进制文件;(Makefile文件用途:告知make编译工具从哪个源代码文件开始编译至哪个源代码文件结束编译)
7) 安装,make install
将第二步make编译产生的二进制文件,拷贝或者安装至Linux操作系统指定的安装路径:--prefix=/usr/local/nginx/;
8) 启动,/usr/local/nginx/sbin/nginx


三、SHELL编程开发Nginx WEB源码部署脚本V1


  1. #!/bin/bash
  2. #2019年1月15日22:00:06
  3. #auto install nginx web
  4. #by author www.jfedu.net
  5. #######################
  6. yum install -y wget gzip tar make gcc
  7. yum install -y pcre pcre-devel zlib-devel openssl-devel
  8. wget -c http://nginx.org/download/nginx-1.14.2.tar.gz
  9. tar -xzf nginx-1.14.2.tar.gz
  10. cd nginx-1.14.2
  11. useradd -s /sbin/nologin www
  12. ./configure --prefix=/usr/local/nginx/ --user=www --group=www
  13. make
  14. make install
  15. /usr/local/nginx/sbin/nginx
  16. ps -ef|grep nginx
  17. netstat -tnlp|grep 80
  18. setenforce 0
  19. systemctl stop firewalld.service

五、SHELL编程变量概念和应用场景


1) 变量是什么?跟变量相对是常量,固定的数值都是属于常量,变量是可变的数或者可变的值,变量主要是用于在编程中提高编程的效率,减少手工重复的操作,可以将重复性高词组替换为变量;

2) Linux操作系统定义变量使用=赋值,变量名称=变量值,例如:WEB=www.jfedu.net,引用变量的值:$WEB,变量定义完成之后,变量去哪里了呢?内存缓冲区的,退出当前SHELL,变量即销毁,或者通过unset WEB删除变量,在当前SHELL或者SHELL脚本文件中定义的变量称为:局部变量、临时变量;

3) SHELL编程变量的意义:

  • 提高SHELL编程的效率和进度;
  • 将重复的数值变成短名称,相当于别名,减少编程重复度;
  • 有利于后期脚本的修改和维护

六、SHELL编程开发Nginx WEB源码部署脚本(v2)


  1. #!/bin/bash
  2. #2019年1月15日22:00:06
  3. #auto install nginx web
  4. #by author www.jfedu.net
  5. #######################
  6. NGX_VER="1.14.2"
  7. NGX_SOFT="nginx-1.14.2.tar.gz"
  8. NGX_URL="http://nginx.org/download"
  9. NGX_DIR="/usr/local/nginx"
  10. NGX_SRC="nginx-1.14.2"
  11. NGX_YUM="yum install -y"
  12. NGX_ARG="--user=www --group=www"
  13. $NGX_YUM wget gzip tar make gcc
  14. $NGX_YUM pcre pcre-devel zlib-devel openssl-devel
  15. wget -c $NGX_URL/$NGX_SOFT
  16. tar -xzf $NGX_SOFT
  17. cd $NGX_SRC
  18. useradd -s /sbin/nologin www
  19. ./configure --prefix=$NGX_DIR/ $NGX_ARG
  20. make
  21. make install
  22. $NGX_DIR/sbin/nginx
  23. ps -ef|grep nginx
  24. netstat -tnlp|grep 80
  25. setenforce 0

SHELL编程概念&变量剖析的更多相关文章

  1. Linux学习——shell编程之变量

    shell编程之变量:Linux shell编程基础中的变量. 包括Bash变量的分类和各变量的详细使用,如:用户自定义变量.环境变量.语系变量.位置参数变量和预定义变量. 1:什么是Bash变量? ...

  2. Linux —— Shell编程之变量赋值和引用

    Linux的shell编程是一种非常成熟的编程语言,它支持各种类型的变量.有三种主要的变量类型:环境变量.内部变量和用户变量. 环境变量(environment variable)是系统环境的一部分, ...

  3. Linux编程 21 shell编程(环境变量,用户变量,命令替换)

    一.概述 这篇介绍shell的变量使用,跟其实语言一样,都有声明变量,使用变量,在shell中变量允许你临时地将信息存储中shell脚本中,以便和脚本的其他命令一起使用. 1.1 环境变量 在前面章节 ...

  4. Shell编程-02-Shell变量

    目录 什么是Shell变量 变量类型 环境变量初始化及其对应文件的生效顺序 什么是Shell变量     在初等数学数学方程式中,我们会经常碰到类似于这样的方程式:y=x+1 ,等号左右两边的x和y称 ...

  5. Linux Shell编程、变量、控制语句

    为什么要学习Shell编程 1)Linux运维工程师在进行服务器集群管理时,需要编写Shell程序来进行服务器管理. 2)对于JavaEE和Python程序员来说,工作的需要,你的老大会要求你编写一些 ...

  6. linux shell编程之变量和bash配置文件(第一篇)

    编程语言有两类 强类型:如C语言.数据具有其特定的类型,先声明定义后才能使用.数据运算时必须符合类型要求(如不能把字符串类型数据直接与整型数据做算数运算) 弱类型:如shell.数据默认为字符型,不用 ...

  7. 一、shell编程与变量

    目录 命令是什么 命令是如何运行的: 基本语法 解释器 注释 如何执行 输入.输出流 重定向 管道符 | 变量 常见Shell变量的类型包括: 变量命名原则 单引号和双引号 反引号 变量作用范围 查看 ...

  8. Shell 编程 (变量和条件测试)

    变量: 1 . 变量声明 直接使用变量 + 赋值 #!/bin/bash NAME='HELLO WORD' echo $NAME 使用 declare 关键字声明 declare(选项)(参数) + ...

  9. Shell编程之变量进阶

    一.变量知识进阶 1.特殊的位置参数变量 实例1:测试$n(n为1...15) [root@codis-178 ~]# cat p.sh echo $1 [root@codis-178 ~]# sh ...

随机推荐

  1. Hyper-V安装CentOS修改分辨率

    grubby --update-kernel=ALL --args="video=hyperv_fb:1600x900" reboot https://blog.csdn.net/ ...

  2. JVM调优参数、方法、工具以及案例总结

    这种文章挺难写的,一是JVM参数巨多,二是内容枯燥乏味,但是想理解JVM调优又是没法避开的环节,本文主要用来总结梳理便于以后翻阅,主要围绕四个大的方面展开,分别是JVM调优参数.JVM调优方法(流程) ...

  3. map最最最基本用法

    map<a,b>c中,a,b是变量类型 参数定义的map的名字 #include<stdio.h> #include<map> //头文件 map<int,c ...

  4. Windows下TeamViewer远程控制的安装与使用

    Windows下远程控制的安装与使用 由于疫情,在家里写论文,资料数据都在学校,只能远程控制了,选的是TeamViewer. 分为控制机和被控制机,安装使用略有不同. 从该网址安装:https://w ...

  5. Netty(四)基于Netty 的简易版RPC

    3.1 RPC 概述 下面的这张图,大概很多小伙伴都见到过,这是 Dubbo 官网中的一张图描述了项目架构的演进过程 它描述了每一种架构需要的具体配置和组织形态.当网站流量很小时,只需一个应用,将所有 ...

  6. SpringBoot进阶教程(七十)SkyWalking

    流行的APM(Application Performance Management工具有很多,比如Cat.Zipkin.Pinpoint.SkyWalking.优秀的监控工具还有很多,其它比如还有za ...

  7. 十大排序算法时间复杂度 All In One

    十大排序算法时间复杂度 All In One 排序算法时间复杂度 排序算法对比 Big O O(n) O(n*log(n)) O(n^2) 冒泡排序 选择排序 插入排序 快速排序 归并排序 基数排序 ...

  8. Suspense for Data Fetching

    Suspense for Data Fetching Experimental https://reactjs.org/docs/concurrent-mode-suspense.html React ...

  9. NGK数字增益平台的算力是什么?

    今年的币价回暖带来了新一轮的"信仰充值",部分投资者对比特币的兴趣从购买向更源头的算力转移.随着比特币开采数量逐渐减少,全网算力一直在增加,算力难度也是越来越高.同时在算力行业中竞 ...

  10. NGK全球启动大会圆满落幕

    加州时间2020年11月25日,NGK全球启动大会在美国硅谷圆满落幕.本次NGK全球启动大会为NGK正式在全球上线拉开了序幕. 百余位受邀嘉宾出席了本次NGK全球启动大会,其中包括NGK创始人.星盟投 ...