上海宝山区Linux云计算培训班哪里有

    2020-12-09发布, 次浏览 收藏 置顶 举报
  • 授课时间:

    现场安排开课时间

  • 授课对象:

    想学Linux云计算的学员

  • 网报价格:电询    课程原价:电询
  • 咨询热线:400-998-6158
  • 授课地址:有多个校区 电询加微信
  • 课程详情

  • 机构简介
  • 地图信息
  • 预约试听

上海宝山区Linux云计算培训班哪里有


Linux云计算
从我们的手机系统安卓,到网站服务器,包括平板电脑,电视机,路由器等等随处可见Linux的身影,在网络服务器领域,Linux更是叱咤风云,一枝独秀,云计算相比企业自己部署服务器环境,能提供和管理的资源更廉价成本更低,而且还有更大的灵活性和可伸缩性,便于轻松的扩展带宽和计算资源,在国外,云计算已经非常流行,而Linux云计算运维工程师更是成为时下热门的职业,精通云计算架构和维护的人才变得炙手可热,还在等什么,Linux定能不负所选。
学习时长:5个月
课程内容:
一阶段:网络基础
第二阶段:Linux基础
第三阶段:Linux运维自动化
第四阶段:数据库运维管理
第五阶段:企业级云架构管理与综合实战(PaaS+IaaS)
第六阶段:就*指*
课程特色:
三分理论+七分实战,学完之后相当于拥有2年的实战工作经验。
八大福利制度:免费食宿、免息贷款、工作服务、个人培训损失险、免费试学、交通补助、网课赠送、免费重修。


适合人群
10基础学习者:自制力强、学习态度好、学习改变现状。
2传统运维工程师:从事Linux传统数据中心运维的人员。
3想加入IT行业的有志人士:对IT行业感兴趣,想要往IT领域长期发展。
4Linux从业者:现在从事Linux相关岗位,不想仅限于简单运维工作。
5企业网管技术支持:从事过企业网管、技术支持类的工作,对运维有一定了解、想要向Linux转型。


一阶段:网络基础 计算机网络
云计算网络 掌握网络基本概念原理
掌握网络的划分方式
掌握网络故障分析与诊断常用方法
掌握交换机配置方法,能够独立配置交换机 
第二阶段:Linux基础 Linux操作系统
Linux*管理
Linux安全与监控 掌握Linux操作系统的基本构成
掌握进程(子进程)的基本模型
掌握正则表达式的基本用法及使用场景
理解Linux中的定时任务概念,可使用cron等工具
配置iptables,完成NAT/SNAT映射 
第三阶段:Linux运维自动化 Shell脚本编程
Python基础
Python进阶
Web开发技术实战
DevOps运维自动化 掌握Shell脚本编程函数、文件及数组的使用;
掌握Python中的基础数据结构及操作方法
掌握pycurl、模块使用方法
掌握Linux运维工具的使用,具备基础研发测试环境
搭建能力;熟悉持续构建与持续集成方法与工具 
第四阶段:数据库运维管理 数据库管理与运维
数据库安全与高可用
NoSQL数据库技术 掌握MySQL的基本安装,能够独立编写SQL语
句并进行调试;能够创建索引;MySQL
日志;MySQL权限管理
掌握Redis环境配置与基本命令操作
掌握MongoDB基本配置与操作;环境部署
与配置;用户权限管理基础;数据库备份 
第五阶段:企业级云架构管理与综合实战 KVM虚拟化技术
高并发Web平台架构技术
大型云架构部署与管理
Docker容器集群构建与管理
云架构自动化配置与监控 掌握基本的虚拟化原理及虚拟化研发平台,
基本libvirt命令
掌握主流应用服务器基本架构原理,能够自己
动手独立搭建主流应用服务器
掌握OpenStack基本部署方式
安装部署Docker Swarm;了解Kubernetes项目 

执行外部脚本的方式

假如在当前目录有 a.sh 脚本,内容如下

#!/bin/bash

echo "a.sh..."

在一个脚本中执行外部脚本主要有以下几种方式

source 外部脚本名字

在当前目录下的 b.sh 脚本,内容如下:

#!/bin/bash

source a.sh

echo "b.sh..."

执行 ./b.sh,结果如下

[root@ecs-centos-7 ~]# ./b.sh

a.sh...

b.sh...

脚本中 source a.sh 命令 会先执行当前目录下的 a.sh脚本,所以结果会先输出 a.sh...再输出 b.sh脚本本身的打印

点号 外部脚本名字

把 b.sh 脚本中执行a.sh脚本的语句修改成 点号 + 空格 + a.sh ,修改之后的脚本内容如下:

注意:点号和a.sh之间一定要加上空格,否则执行的时候会出错

#!/bin/bash

. a.sh

echo "b.sh..."

执行 ./b.sh,结果如下

[root@ecs-centos-7 ~]# ./b.sh

a.sh...

b.sh...

在上述脚本中, . a.sh 会先执行a.sh脚本, 结果会先输出 a.sh...再输出 b.sh...

sh 外部脚本名字

sh 外部脚本名字 和 ./外部脚本名字 两种方式是一样的,选择哪一种方式都没问题,下面是以前面一种方式为例说明的

把 b.sh 脚本中 source a.sh修改成 sh a.sh ,修改之后的脚本内容如下:

#!/bin/bash

sh a.sh

echo "b.sh..."

执行 ./b.sh 命令, 结果如下

[root@ecs-centos-7 ~]# ./b.sh

a.sh...

b.sh...

可以看出,结果输出和上面两种方式是一样的

三种方式的有什么区别

调用外部脚本有 source 外部脚本 、点号 外部脚本、sh 外部脚本 三种方式,它们之间有什么区别呢?

其中,source 外部脚本 和 点号 外部脚本 两种方式是相同的,当前脚本继承了外部脚本的全局变量和函数, 相当于把外部脚本的函数和全局变量导入了当前脚本中

修改 a.sh 和 b.sh 脚本, 内容如下

a.sh脚本

#!/bin/bash

VAR_A=10

func_a()

{

echo "a.sh...pid:$$,param:$1"

}

b.sh脚本

#!/bin/bash

source a.sh

func_a $1

echo "vara:$VAR_A"

echo "b.sh...pid:$$"

执行 ./b.sh 5 命令,结果如下

[root@ecs-centos-7 ~]# ./b.sh 5

a.sh...pid:21485,param:5

vara:10

b.sh...pid:21485

两个脚本中的 $$ 是指执行脚本的进程ID,从结果可以看出,a.sh 和 b.sh 都是在同一个进程内执行的,所以在 b.sh 脚本中执行 source a.sh 命令,会把 a.sh 脚本中的全局变量 VAR_A 和函数 func_a导入到 b.sh中

在 b.sh中打印变量 VAR_A,输出的值和 a.sh中相同,调用 func_a函数,输出也说明了调用的是 a.sh中的函数

source 外部脚本 、点号 外部脚本 两种方式是相同的, 所以, 把 b.sh 中 source a.sh 修改成 . a.sh , 执行 ./b.sh 5, 结果依然是相同的

由于 sh 外部脚本的方式是当前脚本和外部脚本在两个不同的进程中执行,所以当前脚本不能直接使用外部脚本中的函数和全局变量

修改 a.sh 和 b.sh 脚本, 内容如下

a.sh脚本

#!/bin/bash

test_a()

{

echo "a.sh...test_a"

}

echo "a.sh...pid:$$"

b.sh脚本

#!/bin/bash

sh a.sh

echo "b.sh...pid:$$"

test_a

执行 ./b.sh 命令,结果如下

[root@ecs-centos-7 ~]# ./b.sh

a.sh...pid:21818

b.sh...pid:21817

./b.sh:行7: test_a: 未找到命令

从结果可以看出,执行 a.sh 和 b.sh 的进程ID是不同的,b.sh脚本进程找不到test_a函数,所以在b.sh中调用test_a 函数会提示 未找到命令

调用外部脚本中的函数

上一节讲到 sh 外部脚本 的方式无法直接使用外部脚本中函数和全局变量,下面提供几种方法可以解决这个问题

case 分支选择

这种方法类似于程序代码中的 switch case 语句,通过switch 选择不同的分支从而执行不同的逻辑,shell脚本中是使用case关键字来实现的

a.sh脚本

#!/bin/bash

VAR_A=10

test_a()

{

echo "test_a..pid:$$,p1:$1,p2:$2"

}

get_var()

{

echo ${VAR_A}

}

case "$1" in

ta)

test_a $2 $3

;;

var)

get_var

;;

*)

echo "parameter err..."

esac

b.sh脚本

#!/bin/bash

echo "b.sh...pid:$$"

sh a.sh ta 3 5

ret=$(sh a.sh var)

echo "ret:$ret"

执行 ./b.sh 命令,结果如下

[root@ecs-centos-7 ~]# ./b.sh

b.sh...pid:24813

test_a..pid:24814,p1:3,p2:5

ret:10

脚本b.sh一开始打印了调用自身的进程ID

sh a.sh ta 3 5 语句是调用a.sh脚本,传入的三个参数分别是ta, 3, 5 ,执行a.sh时,传入的一个参数 ta经过case匹配之后调用 test_a函数,并把剩下的两个参数 3和5作为参数传入函数

ret=$(sh a.sh var) 语句时调用a.sh脚本,传入一个var 参数,经过case匹配之后调用get_var函数,该函数的作用输出脚本中全局变量VAR_A的值,语句中$()的作用是获取()中命令的返回值,这里是把a.sh脚本中 get_var函数的返回值赋值给 ret变量,所以该变量的值是 a.sh脚本中全局变量VAR_A的值

说明:如果想要获取函数的返回值,可以在函数中用 echo 打印相应的输出值,然后使用$(函数名 参数列表)可以获取到函数中打印的值,如上面b.sh脚本中 ret=$(sh a.sh var)语句,变量ret的值是 a.sh脚本中 get_var函数输出的值10

这里需要注意的是, 如果函数中有echo调试日志,那么调试日志也会一起返回

函数调用模板

上面介绍的用 case 关键字去匹配调用不同的函数有一个缺点,每次a.sh脚本中增加一个函数的时候,case 就需要添加一个分支,分支里调用不同的函数,还需要注意函数是否有参数传入以及参数数量是否正确

我们可以在每个供外部调用脚本的尾部加上以下的语句,就可以解决上述问题, 具体语句如下

if [ $# -ge 1 ]; then

name="$1"

shift 1

$name "$@"

fi

上述语句首先判断调用脚本时传入的参数数量,只有参数数量大于等于1才有效,传入的一个参数表示函数名字,从第二个参数到后一个参数都会作为参数传入到函数中

这里的 shift 1 是把传入脚本的参数左移一个位置,比如:传入脚本参数有 $1 $2 $3三个参数,左移一个位置之后, $2 移动到 $1 的位置,$3 移动到 $2 的位置,参数数量变为2了

原因: 传入脚本的参数中,一个参数是函数名字,从第二个参数起才是函数的参数,如果不做左移处理,一个参数函数名字也会作为参数传入到函数中

下面是完整的脚本内容

a.sh脚本

#!/bin/bash

VAR_A=10

test_a()

{

echo "test_a..pid:$$,p1:$1,p2:$2"

}

get_var()

{

echo ${VAR_A}

}

if [ $# -ge 1 ]; then

name="$1"

shift 1

$name "$@"

fi

b.sh脚本

#!/bin/bash

echo "b.sh...pid:$$"

sh a.sh test_a 3 5

ret=$(sh a.sh get_var)

执行 ./b.sh 命令,结果如下

[root@ecs-centos-7 ~]# ./b.sh

b.sh...pid:25086

test_a..pid:25087,p1:3,p2:5

ret:10

可以看出,结果和上面 case 的方法是一样的

现在其他脚本中都可以通过 sh a.sh 函数名 参数列表 这样的方式调用 a.sh 脚本中的函数了,通过 $(sh a.sh 函数名 参数列表)的方式获取 a.sh脚本函数的返回值

两者的优缺点

与case分支选择的方式相比,函数调用模板的优点是调用者只需要关心复用的脚本中函数名、函数传入参数、函数返回值就可以直接使用

缺点是如果有多个脚本都调用了复用脚本中的函数,当复用脚本中函数名变更时,需要修改所有调用了它的地方

函数调用模板方式的缺点恰恰是case分支选择方式的有点,case分支选择的方式时根据传入的字符串参数调用不同的函数,这里的字符串参数相当于函数的别名,只要这个参数保持不变,脚本中的函数名字可以任意变更

上述的优缺点比较只是一个相对的比较,实际应用中下不会很明显,大部分情况两种方式都可以使用


更多培训课程,学习资讯,课程优惠等学校信息,请进入 上海杨浦区Web培训上海闵行区Python培训上海宝山区Linux云计算培训 网站详细了解,免费咨询电话:400-998-6158

预约试听
  • 姓名: *
  • 性别:
  • 手机号码: *
  • QQ:
  • 微信:
  • 其它说明:
  • 验证码: *  看不清,请点击刷新
相关课程