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

课堂课题:

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

关联任务:

任务五

直播时间:

2019-06-06 15:00: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-孙壮壮


大家好,我是IT修真院上海分院java第十四期学员,一枚正直纯洁善良的JAVA程序员。 今天给大家分享一下,修真院官网JAVA任务二里面的知识点:
如何写shell脚本?尝试自己编写一个简单脚本。
1
背景介绍
每次发布tomcat项目的时候都要反复敲一些命令,重启tomcat之前先检查tomcat进程有没有停掉,没有还要手动kill该进程,单独部署一个项目还好,如果一次多个部署,就比较费劲了

2.知识剖析
2.1
什么是shell脚本
Shell
是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。

Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。

Ken Thompson sh 是第一种 Unix ShellWindows Explorer 是一个典型的图形界面 Shell

2.2shell的基本语法(具体参考http://www.runoob.com/linux/linux-shell.html
1.echo
命令用于向窗口输出文本
2.
定义变量:your_name=“runoob.com”,war=$1

3.if语句:跟java里面差不多,但是有一点要注意。
if
语句语法格式:

 if condition

    then

        command1 

        command2

        ...

        commandN 

    fi

注:这个格式下一定注意后面必须有fi
3.
常见问题
1)
编写的脚本为啥启动时显示命令无效?

2)为什么脚本内容正确无法运行?
3)
脚本一键部署是什么意思?

4.解决方案:
掌握基本shell语法,和写代码一样,通过一些逻辑来运算一些命令达到相应的目的。

5.编码实战
使用方法,将两个shell脚本置于tomcatbin目录下,chmod +x 为两个脚本给上可执行权限,直接用. /start.sh./restart.sh执行即可。具体实现功能:

这是一键启动tomcatjettyresin启动,如果服务器中tomcatjettyresin通过搜索端口号发现已经启动,那么先kill -9 端口号 杀死该端口下的进程,然后启动。代码中的bin路径为本机路径。

#!/bin/sh

 

tomcatbin=/usr/local/tomcat/apache-tomcat-7.0.52/bin

tomcatpid=$(ps aux | grep tomcat | grep -v grep | grep ${tomcatbin} | awk '{print $2}')

resinbin=/usr/local/Resin/resin-4.0.61/bin

resinpid=$(ps aux | grep resin | grep -v grep | grep -v socketwait | awk '{print $2}')

jettybin=/usr/local/jetty/jetty-distribution-9.0.7.v20131107/bin

jettypid=$(ps aux | grep jetty | grep -v grep | awk '{print $2}')

nginxsbin=/usr/local/nginx/sbin

nginxconf=/usr/local/nginx/conf/nginx.conf

nginxpid=$(ps aux | grep nginx| grep -v grep | grep master | awk '{print $2}')

 

 

echo "tomcat启动中"

sh ${tomcatbin}/restart.sh

sleep 3

tomcatpid=$(ps aux | grep tomcat | grep -v grep | grep ${tomcatbin} | awk '{print $2}')

if [ -n "${tomcatpid}" ]; then

  echo "tomcat启动成功"

fi

 

echo "resin启动中"

if [ -n "${resinpid}" ]; then

        echo "原有resin启动,关闭原有resin..."

        sh ${resinbin}/resin.sh stop

    sleep 3

 

    resinpid=$(ps aux | grep resin | grep -v grep | grep watchdog | awk '{print $2}')

   if [ -n "${resinpid}" ]; then

        kill -9 ${resinpid}

        sleep 1

    fi

    if [ -n "${resinpid}" ]; then

    echo "关闭原有resin失败"

    fi

fi

 

echo "resin启动中"

sh ${resinbin}/resin.sh start

sleep 3

resinpid=$(ps aux | grep resin | grep -v grep | grep watchdog | awk '{print $2}')

if [ -n "${resinpid}" ]; then

    echo "resin启动成功"

fi

 

echo "jetty启动中"

sh ${jettybin}/jetty.sh restart

sleep 3

echo "jetty启动成功"

 

echo "nginx启动中"

if [ -n "${nginxpid}" ]; then

        echo "关闭原有resin..."

        kill -QUIT ${nginxpid}

    sleep 3

 

    nginxpid=$(ps aux | grep nginx | grep -v grep | grep master| awk '{print $2}')

   if [ -n "${nginxpid}" ]; then

        kill -9 ${nginxpid}

        sleep 1

    fi

fi

echo "nginx重新启动中"

${nginxsbin}/nginx -c ${nginxconf}

sleep 3

nginxpid=$(ps aux | grep nginx | grep -v grep | grep master| awk '{print $2}')

if [ -n "${nginxpid}" ];

    then

    echo "nginx启动成功"

fi

restart.sh文件内容:

#!/bin/sh

 

bin=$(cd `dirname $0`; pwd)

pid=$(ps aux | grep tomcat | grep -v grep | grep -v restart | grep ${bin} | awk '{print $2}')

 

if [ -n "${pid}" ]; then

        echo "Shutdow...."

        sh ${bin}/shutdow.sh

        sleep 3

       

        pid=$(ps aux | grep tomcat | grep -v grep | grep -v restart | grep ${bin} | awk '{print $2}')

        if [ -n "${pid}" ]; then

               kill -9 &{pid}

               slepp 1

        fi

fi

echo "Startup..."

sh ${bin}/startup.sh

if [ "$1" = "-v" ]; then

        tail -f ${bin}/../logs/catalina.out

fi

6.扩展思考:
一键部署具体指什么,一键部署指从从git或者svn上自动拉取代码,然后进行部署,重启服务器等操作,最后完成登录。

7.参考文献
菜鸟教程:https://www.runoob.com/linux/linux-shell.html

https://www.cnblogs.com/liujiduo/p/5032372.html

8 更多讨论
总结:
1)
编写的脚本为啥启动时显示命令无效?

没有添加chomd +x 脚本名称命令。

2)为什么脚本内容正确无法运行?

脚本路径未按照本机路径重新设置,或者复制时有缺失。
3)
脚本一键部署是什么意思?

一键部署具体指什么,一键部署指从从git或者svn上自动拉取代码,然后进行部署,重启服务器等操作,最后完成登录。


评论

[上海|]JAVA- 发表于 2019-06-09 18:19:05 #1

第一次小课堂讲的还是不错的,加油

回复

请您登录 后进行评论