在Linux服务器上部署的时候,一般都要有哪些脚本,这些脚本该怎么编写?

大家好,我是IT修真院深圳分院第十期学员,一枚正直纯洁善良的JAVA程序员。

 

今天给大家分享一下,修真院官网JAVA任务三,深度思考中的知识点——在Linux服务器上部署的时候,一般都要有哪些脚本,这些脚本该怎么编写?

1.背景介绍

shell简介

       在计算机科学中,Shell俗称壳(用来区别于核),是指“提供使用者使用界面”的软件(命令解析器)。它类似于DOS下cmd.exe。它接收用户命令,然后调用相应的应用程序。同时它又是一种程序设计语言。作为命令语言,它交互式解释和执行用户输入的命令或者自动地解释和执行预先设定好的一连串的命令;作为程序设计语言,它定义了各种变量和参数,并提供了许多在高级语言中才具有的控制结构,包括循环和分支。

2.知识剖析

(1)shell的历史演变

       首个重要的标准Unix Shell是1970年底在V7 Unix(AT&T第7版)中引入的,并且以它的创始科技部基础条件平台“国家气象网络计算应用节点建设”(2004DKA50730)资助者Stephen Bourne的名字命名。Bourne shell 是一个交换式的命令解释器和命令编程语言。

       C Shell,Bill Joy于20世纪80年代早期,在伯克利的加利福尼亚大学开发了C shell。它主要是为了让用户更容易的使用交互式功能,并把ALGOL风格的语法结构变成了C语言风格。它新增了命令历史、别名、文件名替换、作业控制等功能。

      有很长一段时间,只有两类shell供人们选择,Bourne shell用来编程,C shell用来交互。为了改变这种状况,AT&T的bell实验室David Korn开发了Korn shell。ksh结合了所有的C shell的交互式特性,并融入了Bourne shell的语法。因此,Korn shell广受用户的欢迎。它还新增了数学计算,进程协作(coprocess)、行内编辑(inline editing)等功能。

      Bourne Again Shell (bash)。bash是GNU计划的一部分,用来替代Bourne shell。它用于基于GNU的系统如Linux.大多数的Linux(Red Hat,Slackware,Caldera)都以bash作为缺省的shell,并且运行sh时,其实调用的是bash。

      各主要操作系统下缺省的shell:
       AIX下是Korn Shell
       Solaris缺省的是Bourne shell
       FreeBSD缺省的是C shell
       Linux是Bourne Again shell

(2)shell分类

 shell分两大类:
 一:图形界面shel
应用最为广泛的微软的windows系列操作系统,还有也包括广为人知的 Linux shell,其中linux shell 包括 X window manager ,以及功能更强大的CDE、GNOME、KDE、 XFCE。
 二:命令行式shell
 bash / sh / ksh / csh(Unix/linux 系统)
(MS-DOS系统)
  cmd.exe/ 命令提示字符(Windows NT 系统)
  Windows PowerShell(支持 .NET Framework 技术的 Windows NT 系统)
  传统意义上的shell指的是命令行式的shell,以后如果不特别注明,shell是指命令行式的shell。

(3)交互式和非交互式shell         

       交互式模式就是shell等待你的输入,并且执行你提交的命令。这种模式被称作交互式是因为shell与用户进行交互。这种模式也是大多数用户非常熟悉的:登录、执行一些命令、签退。当你签退后,shell也终止了。
shell也可以运行在另外一种模式:非交互式模式。在这种模式下,shell不与你进行交互,而是读取存放在文件中的命令,并且执行它们。当它读到文件的结尾,shell也就终止了。

(4)创建第一个脚本,输出hello world

(5)解析如何书写任务二的开启关闭,重启

#在shell脚本的开头往往有一句话来定义使用哪种sh解释器来解释脚本。
#!/bin/bash  
tomcat_home=/local/kencery/tomcat
SHUTDOWN=$tomcat_home/bin/shutdown.sh
STARTTOMCAT=$tomcat_home/bin/startup.sh

case $1 in

start)

echo "启动$tomcat_home"

$STARTTOMCAT

;;

stop)

echo "关闭  $tomcat_home"

PID=`ps aux | grep $tomcat_home |grep java | awk '{print $2}'`

  if [ -n "$PID" ]; then

echo "will kill tomcat:$PID"

sh "$tomcat_home/shutdown.sh"

sleep 6

else echo "No Tomcat Process $PID"

  fi

PID2=`ps aux | grep $tomcat_home | grep java |awk '{print $2}'`

  if [ -n "$PID2" ]; then

kill -9 $PID2

echo "Try to kill $PID2"

else echo "No Tomcat Process $PID2"

  fi

;;

restart)

echo "关闭$tomcat_home"

$SHUTDOWN
#grep -v "grep" 在文档中过滤掉包含有grep字符的行
pidlist=`ps -ef |grep tomcat  |grep -v "grep"|awk '{print $2}'`

kill -9 $pidlist

sleep 5

echo "启动$tomcat_home"

$STARTTOMCAT

;;

esac

在Linux服务器上部署的时候,一般都要有哪些脚本,这些脚本该怎么编写?_第1张图片

在Linux服务器上部署的时候,一般都要有哪些脚本,这些脚本该怎么编写?_第2张图片

(6)如何书写部署脚本

#!/bin/bash
tomcat_home=/local/kencery/tomcat
SHUTDOWN=$tomcat_home/bin/shutdown.sh
STARTTOMCAT=$tomcat_home/bin/startup.sh
war=$1

#获取当前的目录

if [ ! -n "${war}" ]; then

    echo "***Usage: $0 [project.war]"

    exit 0

fi

if [ ! -f "${war}" ]; then

    echo "***Error: ${war} does not exist."

    exit 0

fi

if [ ! "${war##*.}" = "war" ]; then

    echo "***Error: ${war} is not a war file."

    exit 0

fi

echo "Deploy ${war##*/}..."


rm -rf /local/kencery/tomcat/webapps/czm/ && unzip -qo ${war} -d /local/kencery/tomcat/webapps/czm/


echo "Restart tomcat..."

$SHUTDOWN

pidlist=`ps -ef |grep tomcat  |grep -v "grep"|awk '{print $2}'`

kill -9 $pidlist

rm  $tomcat_home/work/* -rf

sleep 5

echo "启动$tomcat_home"

$STARTTOMCAT

3.常见问题

4.解决方案

5.编码实战

6.扩展思考

(1) awk怎么使用

            1.awk '{[pattern] action}' {filenames}   # 行匹配语句 awk '' 只能用单引号

            2.awk -F  #-F相当于内置变量FS, 指定分割字符

(2)ps -ef和ps -aux的区别
             ps -ef 是用标准的格式显示java这个进程
             ps-ef执行出来是这样的:UID PID PPID C STIME TTY TIME CMD
             ps aux 是用BSD的格式来显示 java这个进程
             ps -aux执行出来是:USER , PID , %CPU , %MEM , VSZ , RSS , TTY , STAT , START , TIME , COMMAND​

在Linux服务器上部署的时候,一般都要有哪些脚本,这些脚本该怎么编写?_第3张图片

7.参考文献

百度、维基、CSDN

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

 

8.更多讨论

linnux怎么给脚本授权?

在当前路径下输入
chmod 777 脚本名
给脚本授权,
然后就可以执行脚本
./脚本名
 

还有什么权限

777 是最高权限,有读、写、执行权限;和属组用户和其他用户的读、写、执行权限。

-rw------- (600) -- 只有读写权限。
-rw-r--r-- (644) -- 只有有读写权限;而属组用户和其他用户只有读权限。
-rwx------ (700) -- 只有有读、写、执行权限。
-rwxr-xr-x (755) -- 有读、写、执行权限;而属组用户和其他用户只有读、执行权限。
-rwx--x--x (711) -- 有读、写、执行权限;而属组用户和其他用户只有执行权限。

 

vim和vi有什么区别?

它们都是多模式编辑器,不同的是vim 是vi的升级版本,它不仅兼容vi的所有指令,而且还有一些新的特性在里面。

vim的这些优势主要体现在以下几个方面:
1、多级撤消
我们知道在vi里,按 u只能撤消上次命令,而在vim里可以无限制的撤消。

2、易用性

vi只能运行于unix中,而vim不仅可以运行于unix,windows ,mac等多操作平台。

3、语法加亮
vim可以用不同的颜色来加亮你的代码。

4、可视化操作
就是说vim不仅可以在终端运行,也可以运行于x window、 mac os、 windows。

5、对vi的完全兼容
某些情况下,你可以把vim当成vi来使用。

vi和vim都是Linux中的编辑器,不同的是vim比较高级,可以视为vi的升级版本。vi使用于文本编辑,但是vim更适用于coding。 

vi有3个模式:插入模式、命令模式、低行模式。 

插入模式:在此模式下可以输入字符,按ESC将回到命令模式。 
命令模式:可以移动光标、删除字符等。 
低行模式:可以保存文件、退出vi、设置vi、查找等功能(低行模式也可以看作是命令模式里的)。 

 

 

技能树.IT修真院   

  “我们相信人人都可以成为一个工程师,现在开始,找个师兄,带你入门,掌控自己学习的节奏,学习的路上不再迷茫”。

   这里是技能树.IT修真院,成千上万的师兄在这里找到了自己的学习路线,学习透明化,成长可见化,师兄1对1免费指导。

 

快来与我一起学习吧~http://www.jnshu.com/home

腾讯视频:https://v.qq.com/x/page/m07258rb9pk.html

你可能感兴趣的:(在Linux服务器上部署的时候,一般都要有哪些脚本,这些脚本该怎么编写?)