shell脚本启动项目实现方式

 更新时间:2026年01月28日 14:36:16   作者:如风之夏  
这是一个用于启动Java项目的Shell脚本模板,通过修改脚本中的几个变量(如APP_NAME、JAR_PATH、JAR_NAME、LOG_PATH和PID),可以轻松启动不同的Java项目,如果需要启动非Java项目,只需在脚本的start方法中更改启动命令,脚本简化了项目启动的配置过程,方便快捷

shell脚本启动项目

根据不同的JAVA项目

只需更改前面APP_NAME,JAR_PATH,JAR_NAME,LOG_PATH,PID变量的值就可以使用,如果非JAVA项目还需在start启动方法处更改启动命令

使用方法

假如该脚本名称是server.sh,在JAR_PATH='/home/server’目录下

1. 进入/home/server目录 cd /home/server
2. 启动项目 ./server.sh start
3. 停止项目 ./server.sh stop
4. 重启项目 ./server.sh restart
5. 查看项目状态  ./server.sh status
#!/bin/sh
 APP_NAME=app-server
#jar包路径
JAR_PATH='/home/server'
#jar名称
JAR_NAME=app-server-3.4.2.jar
#日志路径
LOG_PATH='/home/server/logs'
#PID  代表是PID文件
PID=$JAR_NAME\.pid
 
#使用说明,用来提示输入参数
usage() {
    echo "Usage: sh 执行脚本.sh [start|stop|restart|status]"
    exit 1
}
 
#检查程序是否在运行
is_exist(){
  pid=`ps -ef|grep $JAR_NAME|grep -v grep|awk '{print $2}' `
  #如果不存在返回1,存在返回0    
  if [ -z "${pid}" ]; then
   return 1
  else
    return 0
  fi
}
 
#启动方法
start(){
  is_exist
  if [ $? -eq "0" ]; then
    echo ">>> $APP_NAME is already running PID=${pid} <<<"
  else
    nohup java -Xms512m -Xmx512m -jar $JAR_PATH/$JAR_NAME >> $LOG_PATH/$APP_NAME.log 2>&1 &
    echo $! > $PID
    echo ">>> start $APP_NAME successed PID=$! <<<"
   fi
  }
 
#停止方法
stop(){
  #is_exist
  pidf=$(cat $PID)
  #echo "$pidf" 
  echo ">>> PID = $pidf begin kill $pidf <<<"
  kill $pidf
  rm -rf $PID
  sleep 2
  is_exist
  if [ $? -eq "0" ]; then
    echo ">>> PID = $pid begin kill -9 $pid  <<<"
    kill -9  $pid
    sleep 2
    echo ">>> $APP_NAME process stopped <<<" 
  else
    echo ">>> $APP_NAME is not running <<<"
  fi 
}
 
#输出运行状态
status(){
  is_exist
  if [ $? -eq "0" ]; then
    echo ">>> $APP_NAME is running PID is ${pid} <<<"
  else
    echo ">>> $APP_NAME is not running <<<"
  fi
}
 
#重启
restart(){
  stop
  start
}
 
#根据输入参数,选择执行对应方法,不输入则执行使用说明
case "$1" in
  "start")
    start
    ;;
  "stop")
    stop
    ;;
  "status")
    status
    ;;
  "restart")
    restart
    ;;
  *)
    usage
    ;;
esac
exit 0

总结

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

相关文章

  • linux网络参数配置方法详解

    linux网络参数配置方法详解

    这篇文章主要介绍了linux网络参数的配置方法,这样可以让你的服务器访问网络,主要参数:IP地址、子网掩码、网关、DNS
    2013-11-11
  • 在Ubuntu系统中快速查看apt包信息的多种方法

    在Ubuntu系统中快速查看apt包信息的多种方法

    本文介绍了在Ubuntu系统中快速查看软件包信息的多种方法,主要包括:使用apt show或apt-cache show查看包的基本信息,通过 dpkg 命令查询已安装包的文件列表或命令对应的包,以及利用在线资源获取更详细信息,文章还提供了一个标准操作流程,需要的朋友可以参考下
    2026-01-01
  • Linux下执行java程序的方法

    Linux下执行java程序的方法

    本文通过图文并茂的方式给大家介绍linux下执行java程序的方法,想要在Ubuntu上运行java程序,可以将java程序编译成功后打包,然后在Ubuntu上用命令执行jar文件,具体详情请参考本文
    2016-10-10
  • Linux环境变量&&进程地址空间详解

    Linux环境变量&&进程地址空间详解

    本文介绍了Linux环境变量、命令行参数、进程地址空间以及Linux内核进程调度队列的相关知识,环境变量是系统运行环境的参数,命令行参数用于传递给程序的参数,进程地址空间是进程的虚拟内存区域,而Linux内核进程调度队列是进程调度的核心数据结构
    2025-02-02
  • linux系统中计划任务介绍

    linux系统中计划任务介绍

    大家好,本篇文章主要讲的是linux系统中计划任务介绍,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下,方便下次浏览
    2021-12-12
  • IO多路复用之epoll全面总结(必看篇)

    IO多路复用之epoll全面总结(必看篇)

    下面小编就为大家带来一篇IO多路复用之epoll全面总结(必看篇)。小编觉得挺不错的。现在就分享给大家。也给大家做个参考。一起跟随小编过来看看吧
    2016-12-12
  • ssh报错no key alg的解决方法(关于低版本连接高版本ssh)

    ssh报错no key alg的解决方法(关于低版本连接高版本ssh)

    这篇文章主要介绍了ssh报错no key alg(关于低版本连接高版本ssh),通过ssh-keygen命令重新生成ssh主机秘钥,可以不用重启sshd服务,本文给大家介绍的非常详细,需要的朋友可以参考下
    2023-07-07
  • Linux如何配置网络组team(链路聚合)

    Linux如何配置网络组team(链路聚合)

    文章介绍了链路聚合与双网卡绑定的区别,以及Team模式在网络中的应用,Team模式提供了更多的功能,如负载均衡、主备模式等,适用于不同的网络场景,并且不需要手动加载内核模块,具有更好的拓展性
    2026-01-01
  • 轻松搞定VIM高亮NGINX配置文件的方法

    轻松搞定VIM高亮NGINX配置文件的方法

    在使用vim在写东西的时候,如果有语法高亮显示就会方便很多,之前给大家介绍了很多关于vim高亮的文章,那这篇文章主要给大家介绍了如何轻松搞定VIM高亮NGINX配置文件的方法,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-10-10
  • 使用apache的rotatelogs命令实现WebLogic启动命令的nohup的日志回滚

    使用apache的rotatelogs命令实现WebLogic启动命令的nohup的日志回滚

    通过apache的rotatelogs命令实现WebLogic启动命令的nohup的日志回滚,有需要的朋友可以参考下
    2013-01-01

最新评论