IT修真院·小课堂丨互联网职业小课堂在线学习平台

课堂课题:

如何写shell脚本?尝试自己编写一个简单脚本。

关联任务:

任务五

直播时间:

2019-10-30 15:30:00


课堂内容:

视频链接:

PPT链接:

提交按钮:

小课堂内容格式


标题:

【修真院xx(职业)小课堂】课题名称

开场语:

大家好,我是IT修真院XX分院第X期的学员XX,一枚正直纯洁善良的XX程序员,今天给大家分享一下,修真院官网XX(职业)任务X,深度思考中的知识点——XXX

(1)背景介绍:

背景介绍的时候,尽可能的要宽广,讲清楚来龙去脉,讲清楚为什么会需要这个技术。

(2)知识剖析:

讲知识点的时候,尽可能的成体系,学会成体系的去给别人介绍知识。现在很多做的都是零散的,没有分类。

(3)常见问题:

最少列出1个常见问题。

(4)解决方案:

写清楚常见问题的解决方案。

(5)编码实战:

尽可能的去寻找在真实项目中在用的。如果你能找到某个网站在用你说的知识点,这是最好的。学以致用,否则当成练习题就没有意义了。多准备一些demo,讲解过程中将知识点和demo结合,便于大家理解所讲解的知识点。

(6)拓展思考:

知识点之外的拓展思考,由分享人进行讲解,这些东西就是所谓的深度,也是一个人技术水准高低比较的表现。

(7)参考文献:

引入参加文献的时候,在引用的句子后面加上序号【1】。参考文献中列出详细来源。不要去抄别人的东西,这是一个基本的态度。

(8)更多讨论:

Q1:提问人:问题?
A1:回答人(可以是分享人,也可以是其他学员):回答
Q2:提问人:问题?
A2:回答人(可以是分享人,也可以是其他学员):回答
Q3:提问人:问题?
A3:回答人(可以是分享人,也可以是其他学员):回答

(9)鸣谢:

感谢XX、XX师兄,此教程是在他们之前技术分享的基础上完善而成。

(10)结束语:

今天的分享就到这里啦,欢迎大家点赞、转发、留言、拍砖~

如何写shell脚本?尝试自己编写一个简单脚本。     中品

辅导师兄


【修真院JAVA小课堂】如何写shell脚本?尝试自己编写一个简单脚本。

大家好,我是IT修真院北京分院第40期的学员,一枚正直纯洁善良的JAVA程序员,今天给大家分享一下,修真院官网JAVA任务二,深度思考中的知识点——如何写shell脚本?尝试自己编写一个简单脚本。

(1)背景介绍:

为什么要编写脚本?

之前将项目代码部署到服务器上,需要先在本地打包,上传到服务器,再检查端口是否被占用,tomcat是否关闭等等,都准备好了后才能运行项目,一系列的操作繁琐而且是重复性工作。为了解决这个问题,可以直接将重复性命令编写进脚本,运行脚本进行命令的批量操作,甚至可以将项目代码上传到GitHub上,直接编写脚本从GitHub上拉取项目代码,而后进行部署运行。这样就省去了很大的功夫。

(2)知识剖析:

什么是shell?

shell是一个用C语言编写的程序,它是用户使用linux的桥梁。它提供了一个界面,用户通过这个界面访问操作系统内核的服务。

shell即是一种命令语言,又是一种程序设计语言(也就是shell脚本),作为命令语言,它互动式的解释和执行用户输入的命令,作为程序设计语言,它定义了各种变量和参数,并提供许多在高阶语言中才具有的控制结构,包括循环和分支。它虽然不是linux系统内核的一部分,但是它调用了系统内核的大部分功能来执行程序、创建文档并以并行的方式协调各个程序的运行。

简单的理解,shell就是一个命令行解释器,作用是按照一定语法将输入的命令加以解释传给系统,而shell脚本是一种为shell编写的脚本程序,可以说是用来输入命令的,只不过相比传统的一个一个命令输入,脚本是将一部分命令按顺序排列,一次性输入给shell去解释。

(3)常见问题:

1、#!/bin/bash 和 #!/bin/sh 的区别?

2、Windows使用NodePad++编辑脚本文件,上传服务器运行为什么会报错?

3、脚本为什么使用“./”命令运行会报错,用“sh ./”命令就可以运行?

(4)解决方案:

1、“#!”是个指示路径的表示符,/bin/bash和/bin/sh是指定了脚本解析器的程序路径

bash、sh都是命令解释程序,可以执行从标准输入或文件中读取的命令。

但是sh的脚本可以不加修饰在bash上运行,而bash的脚本在sh上运行则容易报错,简单说,bash包含sh。

2、编写脚本时,如果直接在linux上编写会很麻烦,在Windows上使用NodePad++编写后,上传到linux上会很方便,但是由于种种历史原因,Windows、Unix/linux、Mac三者之间,对于文件中所用回车换行符表示的方法都不一样,所以在使用时需要进行格式转换。

Windows上按一下回车,实际输入的是“回车CR”和“换行LF”,而linux则只输入“换行LF”,所以编辑的文件每行都会多一个CR,在linux上就无法运行。

这时需要使用vim命令进入编辑文件页面,使用“:set ff ”查看可以发现脚本文件格式为dos格式,使用“:set ff=unix”命令将格式改为unix格式,则可以在linux上运行脚本文件。

3、因为脚本文件没有相应的权限,如果想使用“./”命令,需要使用“chmod 777 xxx.sh”命令添加权限,777代表读、写、执行权限对所有人都开放。而直接用“sh ./”命令执行脚本,是直接运行解释器,这样就不需要在脚本文件的第一行指定解释器信息了,写了也没用。

(5)编码实战:

编写一个一键部署的脚本,从GitHub上拉下项目代码,maven打包,移动war包,并运行项目。

#!/bin/bash

echo 启动部署脚本...

echo 进入/git_xzy

cd /git_xzy


echo pull项目代码

git pull origin master


echo 进入/git_xzy/xzy_student项目

cd /git_xzy/xzy_student


echo maven命令打包

mvn clean package -Dmaven.test.skip=true


echo 进入war包所在文件夹

cd /git_xzy/xzy_student/target


echo 删除原有ROOT文件夹

rm -rf /usr/local/java/apache-tomcat-9.0.24/webapps/ROOT


echo 移动war包到webapps

mv ROOT.war /usr/local/java/apache-tomcat-9.0.24/webapps/


echo 捕捉Tomcat进程...

pid_student=`ps aux |grep tomcat |grep -v grep |grep -v restart |awk '{print $2}'`

if [ "$pid_student" != "" ];

then

    echo Tomcat进程捕获

    kill -9 "$pid_student"

    echo $pid_student 进程已被杀死

else

    echo 没有Tomcat进程

fi


echo 启动Tomcat...

sh /usr/local/java/apache-tomcat-9.0.24/bin/startup.sh


(6)拓展思考:

(7)参考文献:

【1】https://www.jianshu.com/p/070bd0b4855f

【2】https://blog.csdn.net/u012453843/article/details/69803244/

【3】https://www.runoob.com/linux/linux-shell.html

(8)更多讨论:

Q1:shell 和 shell 脚本有什么区别?

A1:简单说,shell就是一个命令行解释器,作用是按照一定语法将输入的命令加以解释传给系统,而shell脚本是一种为shell编写的脚本程序,可以说是用来输入命令的,只不过相比传统的一个一个命令输入,脚本是将一部分命令按顺序排列,一次性输入给shell去解释。

Q2:什么是一键部署?

A2:一键部署就是只需要运行该脚本,就可以从GitHub或SVN上拉取项目代码,进行一系列部署,运行服务器,启动项目。

Q3:脚本权限都有哪些?

A3:Unix和linux的各种操作系统下,每个文件都按读、写、运行设定权限,而权限的持有人分为user用户、group同组用户、others其他用户。

权限用数字表示,其中r=4,w=2,x=1。所以777就是最高权限,表示所有人都有读、写、运行权限,其它权限根据相应要求可自行设置。

比如“-rw-r--r--”,就是644,从第二个字符起,“rw-”即用户有读、写权限,但没有运行权,“r--”表示同组用户只有读权限,没有写、运行权限,其他用户和同组权限相同。


今天的分享就到这里啦,欢迎大家点赞、转发、留言、拍砖~

评论

[北京|荣耀师兄]JAVA-白云中 发表于 2019-11-01 10:06:46 #1

能讲的再深入一些就更好了

回复

请您登录 后进行评论