Linux脚本启动jar包方式

 更新时间:2024年04月28日 10:47:19   作者:pocher  
这篇文章主要介绍了Linux脚本启动jar包方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

注意:

以下脚本笔者是在Windows上编辑的,因此默认格式是dos。

如果在Linux上使用,请使用vi命令编该文件,改为Unix格式。

笔者使用的SpringBoot + jsp 因此使用的是war包,如果你使用的是jar包,在文中用到war的地方改成jar就行。

一:脚本auto_deploy.sh

使用该脚本只需要修改JAR_NAME(改成自己的)、LOG_PATH(改成自己的)、脚本格式(改成Unix格式)这三点就行了。

#!/bin/bash
# 定义变量
# 要运行的jar包路径,加不加引号都行。 注意:等号两边 不能 有空格,否则会提示command找不到
JAR_NAME="/xxx/xxx/xxx/xxx.war"
# 日志路径,加不加引号都行。 注意:等号两边 不能 有空格,否则会提示command找不到
LOG_PATh=/export/Logs/main.log
 
 
# 如果输入格式不对,给出提示!
tips() {
	echo ""
	echo "WARNING!!!......Tips, please use command: sh auto_deploy.sh [start|stop|restart|status].   For example: sh auto_deploy.sh start  "
	echo ""
	exit 1
}
 
 
# 启动方法
start() {
        # 重新获取一下pid,因为其它操作如stop会导致pid的状态更新
	pid=`ps -ef | grep $JAR_NAME | grep -v grep | awk '{print $2}'`
        # -z 表示如果$pid为空时执行
	if [ -z $pid ]; then
        nohup java -jar $JAR_NAME > /dev/null 2>&1 &
        pid=`ps -ef | grep $JAR_NAME | grep -v grep | awk '{print $2}'`
		echo ""
        echo "Service ${JAR_NAME} is starting!pid=${pid}"
		echo "........................Here is the log.............................."
		echo "....................................................................."
        tail -f $LOG_PATh
		echo "........................Start successfully!........................."
	else
		echo ""
		echo "Service ${JAR_NAME} is already running,it's pid = ${pid}. If necessary, please use command: sh auto_deploy.sh restart."
		echo ""
	fi
}
 
# 停止方法
stop() {
		# 重新获取一下pid,因为其它操作如start会导致pid的状态更新
	pid=`ps -ef | grep $JAR_NAME | grep -v grep | awk '{print $2}'`
        # -z 表示如果$pid为空时执行。 注意:每个命令和变量之间一定要前后加空格,否则会提示command找不到
	if [ -z $pid ]; then
		echo ""
        echo "Service ${JAR_NAME} is not running! It's not necessary to stop it!"
		echo ""
	else
		kill -9 $pid
		echo ""
		echo "Service stop successfully!pid:${pid} which has been killed forcibly!"
		echo ""
	fi
}
 
# 输出运行状态方法
status() {
        # 重新获取一下pid,因为其它操作如stop、restart、start等会导致pid的状态更新
	pid=`ps -ef | grep $JAR_NAME | grep -v grep | awk '{print $2}'`
        # -z 表示如果$pid为空时执行。注意:每个命令和变量之间一定要前后加空格,否则会提示command找不到
	if [ -z $pid ];then
		echo ""
        echo "Service ${JAR_NAME} is not running!"
		echo ""
	else
		echo ""
        echo "Service ${JAR_NAME} is running. It's pid=${pid}"
		echo ""
	fi
}
 
# 重启方法
restart() {
	echo ""
	echo ".............................Restarting.............................."
	echo "....................................................................."
		# 重新获取一下pid,因为其它操作如start会导致pid的状态更新
	pid=`ps -ef | grep $JAR_NAME | grep -v grep | awk '{print $2}'`
        # -z 表示如果$pid为空时执行。 注意:每个命令和变量之间一定要前后加空格,否则会提示command找不到
	if [ ! -z $pid ]; then
		kill -9 $pid
	fi
	start
	echo "....................Restart successfully!..........................."
}
 
# 根据输入参数执行对应方法,不输入则执行tips提示方法
case "$1" in
   "start")
     start
     ;;
   "stop")
     stop
     ;;
   "status")
     status
     ;;
   "restart")
     restart
     ;;
   *)
     tips
     ;;
esac

注意事项:

  • -z 命令表示如果$pid为空时执行。 注意:每个命令和变量之间一定要前后加空格,否则会提示command找不到 
  •  要运行的jar包路径,加不加引号都行。 注意:等号两边 不能 有空格,否则会提示command找不到

二:更改脚本格式

注意:以下脚本笔者是在Windows上编辑的,因此默认格式是dos。

如果在Linux上使用,请使用vi命令编该文件,改为Unix格式。

第一步

上传脚本文件到Linux系统后,使用vi命令编辑该脚本文件:

vi auto_deploy.sh

第二步

在Esc模式下冒号输入命令set ff回车就能看到,该脚本是Windows系统的dos格式

如下图:

第三步

在Esc模式下冒号,输入修改格式命令set ff=linux,然后回车(回车后Linux系统并没有提示),完事后还是在Esc模式下输入写入保存命令:wq。

:set ff=linux
:wq

如下图 

三:脚本运行截图

服务非启动状态下截图

sh auto_deploy.sh

sh auto_deploy.sh stop

 

sh auto_deploy.sh status

服务启动状态下截图

sh auto_deploy.sh start

再次启动一下试试(此时会有提示:服务已经启动,启动状态下请使用重启命了):

查看状态(提示正在运行):

sh auto_deploy.sh status

重启试试:

sh auto_deploy.sh restart

停掉服务试试:

sh auto_deploy.sh stop

再次输入stop命令(给出提示:服务没有运行,没必要停止!):

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • centos开机自动启动RabbitMq软件的方法

    centos开机自动启动RabbitMq软件的方法

    本文详细讲解了centos开机自动启动RabbitMq软件的方法,文中通过示例代码介绍的非常详细。对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以收藏下
    2021-11-11
  • linux如何开启apache服务

    linux如何开启apache服务

    这篇文章主要介绍了linux如何开启apache服务,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-11-11
  • Apache中mod_proxy模块的使用问题及解决方案

    Apache中mod_proxy模块的使用问题及解决方案

    配置了apache的情况,包括uap集群,配置https等场景下均适用,这篇文章主要介绍了Apache中mod_proxy模块的使用,需要的朋友可以参考下
    2024-08-08
  • 使用iptable和Firewalld工具来管理Linux防火墙连接规则

    使用iptable和Firewalld工具来管理Linux防火墙连接规则

    今天小编就为大家分享一篇关于使用iptable和Firewalld工具来管理Linux防火墙连接规则的文章,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-09-09
  • Linux下查看压缩文件内容的10种方法(小结)

    Linux下查看压缩文件内容的10种方法(小结)

    这篇文章主要介绍了Linux下查看压缩文件内容的10种方法(小结),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-11-11
  • linux kernel 打印函数指针对应的函数名方法

    linux kernel 打印函数指针对应的函数名方法

    下面小编就为大家带来一篇linux kernel 打印函数指针对应的函数名方法。小编觉得挺不错的。现在就分享给大家。也给大家做个参考。一起跟随小编过来看看吧
    2016-12-12
  • ssh连接超时解决方法

    ssh连接超时解决方法

    本文为大家介绍了ssh连接超时的解决方法, 另外提供一种不修改配置文件就可以解决连接超时的方法,大家参考使用吧
    2014-01-01
  • 解决启动php-fpm后访问不到php文件的办法

    解决启动php-fpm后访问不到php文件的办法

    今天碰了一个很奇怪的问题,当启动php-fpm后,发现居然访问不到php文件了,后来通过查看日志、分析+搜索终于解决了,现在将整个过程分享给大家,也方便同样遇到这个问题的同学们参考借鉴,下面来一起看看吧。
    2016-12-12
  • 详解Linux用户态与内核态通信的几种方式

    详解Linux用户态与内核态通信的几种方式

    这篇文章主要介绍了详解Linux用户态与内核态通信的几种方式,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-06-06
  • centos系统安装Kubernetes集群步骤

    centos系统安装Kubernetes集群步骤

    大家好,本篇文章主要讲的是centos系统安装Kubernetes集群步骤,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下,方便下次浏览
    2022-01-01

最新评论