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

news/2024/12/22 13:07:52/

大家好,我是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

(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怎么使用<br>
            1.awk '{[pattern] action}' {filenames}   # 行匹配语句 awk '' 只能用单引号<br>
            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​

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


http://www.ppmy.cn/news/778156.html

相关文章

六类挂单一键取消脚本

转载原文&#xff1a;http://www.popoding.club/post/34/ MT5挂单类型有六种&#xff0c;能够很好地适应回调和突破场景&#xff0c;在一些突破策略交易系统中应用较多&#xff0c;当挂单条件不再有效的时候&#xff0c;就会涉及到挂单的取消操作。六种挂单应用说明如下&#…

GIT下载安装

天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物。 每个人都有惰性&#xff0c;但不断学习是好好生活的根本&#xff0c;共勉&#xff01; 文章均为学习整理笔记&#xff0c;分享记录为主&#xff0c;如有错误请指正&#xff0c;共同学习进步。…

php服务器脚本是什么,什么是服务器脚本?有什么优点

什么是服务器脚本&#xff1f;有什么用&#xff1f;本篇文章就给大家简单介绍服务器脚本&#xff0c;让大家知道服务器脚本是什么&#xff0c;有什么优点&#xff0c;流行服务器脚本语言有哪些。下面就开始具体内容&#xff0c;希望对大家有所帮助。 什么是服务器脚本&#xff…

防外挂的shell脚本

http://chlotte.blog.51cto.com/318402/544159 由于一些玩家用外挂操作或者是游戏服务器无法承载过多的玩家&#xff0c;导致服务器负载过高&#xff0c;用此脚本可以把连接过多的玩家给屏蔽掉。其实还是游戏设计的时候考虑不全&#xff0c;像魔兽那样&#xff0c;搞个排队系统…

脚本计算机术语,谁能给我简单明了的解释一下脚本是什么意思?

张雅熙i 回答数&#xff1a;138 | 被采纳数&#xff1a;105 2017-02-06 18:28:12 计算机专业术语 脚本 script 是一种宏 或是 大家通常说的脚本语言&#xff0c;即然是一种计算机语言也就说明了它可以进行程序的编制&#xff0c;而可以实现在计算机上运行。计算机语言分三个层…

客户端脚本与服务器脚本的区别

2019独角兽企业重金招聘Python工程师标准>>> 做b/s的东西,感觉首先要弄懂客户端与服务器端的交互原理(参考之前文章:http://blog.csdn.net/wang379275614/article/details/9771659 ),前台与后台的概念,前台、后台代码是如何被编译或解释的一个过程,不能云里雾…

脚本是什么意思?有什么特点?与RPA有哪些区别?

脚本是什么意思&#xff1f;有什么特点&#xff1f;与RPA有哪些区别&#xff1f;相信还有不少人对于这三个问题不是很清楚&#xff0c;今天我们小编就给大家来简单回答一下&#xff0c;仅供参考哦&#xff01; 脚本是什么意思&#xff1f; 脚本简单地说就是一条条的文字命令&a…

脚本用处有多大,你是否有了解?

​背景&#xff1a; 1、企业规模不大&#xff0c;流程不规范&#xff0c;开发自己建表2、帮助产品统计数据3、快速实现解决方案&#xff1a; 1、shell脚本2、Python脚本本人更倾向于用shell脚本来处理&#xff0c;可能跟本人习惯有关吧&#xff0c;下面即为日常工作常用的一些…