记录一次shell脚本的使用
此文章适合刚入门的小白,通俗易懂。大神就不用看了。哈哈。。。
大家在使用自动化部署jenkins时,一个按钮即完成了部署。但是很多小白应该还不清楚这下按钮具体做了哪些操作。
因为此篇文章主要讲的是shell脚本,jenkins部分就简单来说了。按下jenkins构建按钮,大概的操作流程为:编译打包—>发送到指定服务器—>执行shell脚本。
我们先看一个shell脚本的例子。
APP_NAME=lbccrm.jar P_ID=`ps -ef | grep java | grep $APP_NAME|awk '{print $2}'`; echo "########$SERVICE_NAME process pid is:$P_ID########" if [ "$P_ID" == "" ]; then echo "########$SERVICE_NAME process not exists or stop success########" else echo "########begin kill $SERVICE_NAME process, pid is:$P_ID########" kill -9 $P_ID fi sleep 2 current_dir=$(cd `dirname $0`; pwd) echo "########current_dir is:$current_dir########" nohup /data/opt/jdk1.8.0_181/bin/java -jar $current_dir/$APP_NAME > $current_dir/lbccrmlog.file 2>&1 & echo "########$APP_NAME is success########"
那么这个脚本具体都做了什么事呢。有些代码功底,就算没学过shell脚本的人应该也能看懂一大半。下面我就简单的来说一下,其实非常简单。
APP_NAME=lbccrm.jar 定义变量
P_ID=`ps -ef | grep java | grep $APP_NAME|awk '{print $2}'`; 获取我们应用程序的pid
echo命令就是输出文本
if [ "$P_ID" == "" ]; then echo "########$SERVICE_NAME process not exists or stop success########" else echo "########begin kill $SERVICE_NAME process, pid is:$P_ID########" kill -9 $P_ID fi
意思就是查到P_ID后杀死该程序
current_dir=$(cd `dirname $0`; pwd)获取当前目录
nohup /data/opt/jdk1.8.0_181/bin/java -jar $current_dir/$APP_NAME > $current_dir/lbccrmlog.file 2>&1 & 重新启动程序