手把手教你写一个Shell脚本部署你的服务-轻松智能化你的部署流程 (手把手教你写作文)
我们都知道,在开发的环节中,有很多部署自己微服务的方式,其中有各种各样的不同操作,比如经常使用打包为镜像的方式,还有基础经常使用jar包的方式启动部署,但是呢?经常使用jar包部署,那就离不开这个启动jar包的脚本命令,总不能每次都是间接自己手动杀端口,而后再从新启动吧,当天了不起来带大家看一下这个Shell脚本,并且写一个Shell脚本通用给大家,拿来可用。
假构想间接拿这个脚本改一下用的,不想看这个基础内容的,可以间接拉到最后了。
1.检查自己以后系统自动的Shell
echo$SHELL
输入:/bin/bash
2.检查系统支持的Shell
cat/etc/shells
输入:
/bin/sh/bin/bash/usr/bin/sh/usr/bin/bash
也就是说,我们的云主机是支持我们在这里给他布置Shell脚本的
我们这时刻先来布置一下sh的文件,创立一个文件夹,而后在其中创立一个sh的文件。
mkdir/usr/local/shelltest
touchtest.sh
创立成功我们编辑一下内容
vimtest.sh
#!/bin/bashecho"HelloWorldShell"
而后我们进去运转一下我们的Shell的第一个脚本
bashtest.sh
进去的结果是HelloWorldShell.
我们知道其实Shell脚本没那么复杂,一个启动jar包的启动,或者用到的用法就一些,我们来看一下另外的几个必备的语法
if...then...else...fi
接上去我们看一段脚本,来依据脚本剖析
start(){echo""pid=$(ps-ef|grep$jar_name|grep-vgrep|awk'{print$2}')if[-z$pid];thencd$jar_path#这里转到jar包目录口头命令,是为了经常使用jar_path下的config文件,貌似程序只能识别以后口头命令目录下的性能,否则就是经常使用已打入Jar包的性能文件。nohupjava-jar$jar_name>$log_path2>&1&pid=$(ps-ef|grep$jar_name|grep-vgrep|awk'{print$2}')echo"运行${jar_name}启动成功,pid=${pid}"#tl-f$log_pathelseecho"运行${jar_name}正在运转,pid=${pid}"fiecho""}
start()望文生义,这显著就是一个start方法,方法体的内容则是花括号内的内容。
echo我们都知道了,就是输入个内容
ps-ef|grep
这个命令更不用多说了,那间接就是用来查问运行的端口号的,前面跟着我们的jar_name实践上就是一个变量,间接失掉的我们在方法外面定义的
前面的awk其实就相当于是消息的读入
也就是说,我们在口头shstart.shstart的方法的时刻,而后会读取我们接上去输入的内容,接上去就进入了判别环节。
cd$jar_path#这里转到jar包目录口头命令,是为了经常使用jar_path下的config文件,貌似java程序只能识别以后口头命令目录下的性能,否则就是经常使用已打入Jar包的性能文件。nohupjava-jar$jar_name>$log_path2>&1&这个则是我们最关键的启动Jar包的版本
nohup这个命令的标识则是我们经常使用后盾启动的方式,不用再关注假设口头jar-jar的时刻,我们封锁了以后的窗口,结果我们的服务就自愿中断了,而前面,我们还贴心的又查问了一下这个服务,而后把我们的服务能否启动成功给大家展现进去,假设运转之后,就会出现运行xxx启动成功,pid=xxxxx的标记了。
看完了我们的启动命令,接上去就得看我们的中止命令了。
stop(){echo""pid=$(ps-ef|grep$jar_name|grep-vgrep|awk'{print$2}')if[-z$pid];then#-z是判别能否为空echo"${jar_name}未运转!"elseecho"预备封锁进程$pid"kill-9$pidsleep0.5echo"${jar_name}已封锁!"fiecho""}
这个stop的方法几句比拟便捷了,接受支出内容,而后判别这个jar包能否在运转当中,假设运转的话,那么找到这个端口,而后封锁到这个进程号,最后给我们输入一个xxxx已封锁
我们再来看一个重启的方法:
restart(){stopsleep2echo"中止成功,预备启动jar包"start}
这个更不用说了,我们写了start和stop只需在这个restart外面去口头一下这个stop而后期待一会,而后再启动就完事了。
完整的脚本如下
#交流成你的jar包jar_name=cloud-ui-zhiyikeji.jarjar_path=/usr/webjar/log_path=/usr/webjar/logs/`date+%y-%m-%d`_out.log#指向自定义jdk#exportJAVA_HOME=/usr/jdk/jdk1.8.0_381#exportCLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar#exportPATH=$JAVA_HOME/bin:$PATHstop(){echo""pid=$(ps-ef|grep$jar_name|grep-vgrep|awk'{print$2}')if[-z$pid];then#-z是判别能否为空echo"${jar_name}未运转!"elseecho"预备封锁进程$pid"kill-9$pidsleep0.5echo"${jar_name}已封锁!"fiecho""}start(){echo""pid=$(ps-ef|grep$jar_name|grep-vgrep|awk'{print$2}')if[-z$pid];thencd$jar_path#这里转到jar包目录口头命令,是为了经常使用jar_path下的config文件,貌似java程序只能识别以后口头命令目录下的性能,否则就是经常使用已打入Jar包的性能文件。nohupjava-jar$jar_name>$log_path2>&1&pid=$(ps-ef|grep$jar_name|grep-vgrep|awk'{print$2}')echo"运行${jar_name}启动成功,pid=${pid}"#tail-f$log_pathelseecho"运行${jar_name}正在运转,pid=${pid}"fiecho""}status(){echo""pid=$(ps-ef|grep$jar_name|grep-vgrep|awk'{print$2}')if[-z$pid];thenecho"运行${jar_name}未运转"elseecho"运行${jar_name}正在运转,pid=${pid}"fiecho""}restart(){stopsleep2echo"中止成功,预备启动jar包"start}action(){echo"请输入数字选用要口头的操作:1=启动,2=重启,3=中止,4=检查运转形态,5=分开"echo'你输入的数字为:'readacase$ain"1")start;;"2")restart;;"3")stop;;"4")status;;"5")exit1;;*)echo"输入失误,请从新输入"action;;esac}action
你学会了么?
linux下如何写个SHELL脚本,每天执行这么几句命令:
1、登录CentOS7系统,打开终端,输入命令env shell打印出shell进程的环境变量。
2、本地变量只存在当前shell进程。新建一个本地变量MYVAR=myvalue注意等号两边不能有空格。
3、查看本地变量set查看指定本地变量set | grep MYVAR。
4、导出本地变量为环境变量export MYVAR。
5、删除本地变量或环境变量unset MYVAR即可。
写一个shell脚本,向系统中添加一个服务。在线等,急!
提供思路:(不要做伸手党~)1、开机自启两种方法:1、加入到系统配置文件2、将脚本做成服务形式(拷贝到/etc/init.d/) 2、可以通过init.d下的脚本控制其启动说明脚本要支持start|stop|restart等参数使用case匹配进行输出,例子如下:#!/bin/bashmode=$1case $mode instart)....;;stop)....;;restart)....;;3、每5分钟将系统进程信息发送至syslog提示:logger命令是syslogd提供的shell接口。 通过调用该命令可达到效果每5分钟自动发送系统进程信息:方法:1、脚本中加入sleep 300(秒为单位) 2、定时任务 以上 “零件”已准备妥当,思路应该已经明了~ 自己组装一下吧
免责声明:本文转载或采集自网络,版权归原作者所有。本网站刊发此文旨在传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及版权、内容等问题,请联系本网,我们将在第一时间删除。同时,本网站不对所刊发内容的准确性、真实性、完整性、及时性、原创性等进行保证,请读者仅作参考,并请自行核实相关内容。对于因使用或依赖本文内容所产生的任何直接或间接损失,本网站不承担任何责任。