Linux下Java Python启动管理脚本方便程序管理

 更新时间:2023年11月27日 08:58:16   作者:chenglei1208  
这篇文章主要为大家介绍了Linux下Java/Python启动管理脚本方便程序管理,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

引言

分享一个从网络上搜集到的Java/Python管理脚本,方便在Linux操作系统下管理你的Java或Python应用程序,只需要对其进行稍加修改即可投入生产使用。

建议将脚本修改为startup.sh,并赋予可执行权限:

chmod +x startup.sh

下面是完成的脚本:

1.Java启动脚本

在脚本中修改JAVA_HOME变量的地址及SERVICE_NAME中jar包的名称,将启动脚本与jar包置于同一目录下即可。

#!/bin/bash
#网址:aaa.al
export JAVA_HOME=/usr/local/jdk1.8.0_271
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:${JAVA_HOME}/lib
## service name
SERVICE_ROOT=$(dirname $(dirname "$PWD"))
SERVICE_DIR=$(cd $(dirname $0); pwd)
SERVICE_NAME=test.jar
JAR_NAME=$SERVICE_NAME\.jar
PID=$SERVICE_NAME\.pid
cd $SERVICE_DIR
case "$1" in
    start)
        nohup java -Xms256m -Xmx512m -XX:PermSize=256m -XX:MaxPermSize=1024m -jar $JAR_NAME > $SERVICE_NAME.log 2>&1 &
        echo $! > $SERVICE_DIR/$PID
        echo "=== start $SERVICE_NAME"
        ;;
    stop)
        kill `cat $SERVICE_DIR/$PID`
        rm -rf $SERVICE_DIR/$PID
        echo "=== stop $SERVICE_NAME"
        sleep 5
        P_ID=`ps -ef | grep "$SERVICE_NAME" | grep -v grep | grep -v "$0" | awk '{print $2}'`
        if [ "$P_ID" == "" ]; then
            echo "=== $SERVICE_NAME process not exists or stop success"
        else
            echo "=== $SERVICE_NAME process pid is:$P_ID"
            echo "=== begin kill $SERVICE_NAME process, pid is:$P_ID"
            kill -9 $P_ID
        fi
        ;;
    restart)
        $0 stop
        sleep 2
        $0 start
        echo "=== restart $SERVICE_NAME"
        ;;
    *)
        echo "-------------------------------------"
        echo ""
        echo "项目地址: ${SERVICE_DIR}/${JAR_NAME}"
        echo ""
        echo "你可以使用如下参数进行操作"
        echo "start  -启动当前项目"
        echo "stop  -停止当前项目"
        echo "restart -重启当前项目" 
        echo ""
        echo "-------------------------------------"
        ;;
esac
exit 0

启动命令:

./startup.sh start

停止命令:

./startup.sh stop

重启命令:

./startup.sh restart

2.python启动脚本

同样的方式,定义项目使用的虚拟环境地址venvPath,在启动项目时会激活虚拟环境来运行python脚本。如果您没有使用虚拟环境,可根据需求注释虚拟环境相关脚本。

#!/bin/bash
#网址:aaa.al
# 服务配置
# python 项目使用的虚拟环境路径
venvPath="/home/ops/add_missing_room_detail/py36"
# python 项目的路径
projectPath="/home/ops/add_missing_room_detail/HotelGo2DelonixPmx"
# python 项目启动命令
CMD="python fix_missing_rates.py"
# 启动进程函数
start_process() {
  # 判断进程是否已经在运行,如果已经在运行则不需要重复启动
  start_pid=$(ps aux | grep "$CMD" | grep -v grep | awk '{print $2}')
  if [ -n "$start_pid" ]; then
    echo "The process is already running with PID:" $start_pid
    return 1
  fi
 # 激活python虚拟环境
  echo "activate python venv3  $venvPath"
  source $venvPath"/bin/activate"
  cd $projectPath
  # 后台运行执行命令,将日志输出到文件runoob.log
  nohup $CMD >runoob.log 2>&1 &
  start_pid=$!
  # 判断进程是否成功启动
  if [ -z "$start_pid" ]; then
    echo "Fail to start process"
    return 1
  else
    echo "The process has been started with PID:" $start_pid
    return 0
  fi
}
# 停止进程函数
stop_process() {
  # 根据进程名过滤出进程id,并结束进程
  start_pid=$(ps aux | grep "$CMD" | grep -v grep | awk '{print $2}')
  if [ -z "$start_pid" ]; then
    echo "No process to stop."
    return 1
  else
    kill -9 $start_pid
    echo "The process has been stopped with PID:" $start_pid
    return 0
  fi
}
# 根据传入参数执行对应的操作
case $1 in
start)
  start_process
  ;;
stop)
  stop_process
  ;;
*)
  echo "Usage: $0 {start|stop}"
  exit 1
  ;;
esac

启动项目:

./startup.sh start

停止项目:

./startup.sh stop

以上就是Linux下Java/Python启动管理脚本方便程序管理的详细内容,更多关于Linux启动JavaPython管理脚本的资料请关注脚本之家其它相关文章!

相关文章

  • 搜索一文入门ElasticSearch(节点 分片 CRUD 倒排索引 分词)

    搜索一文入门ElasticSearch(节点 分片 CRUD 倒排索引 分词)

    这篇文章主要为大家介绍了搜索一文入门ElasticSearch(节点 分片 CRUD 倒排索引 分词)的基础详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-03-03
  • Eclipse新建项目不可选择Java Project问题解决方案

    Eclipse新建项目不可选择Java Project问题解决方案

    这篇文章主要介绍了Eclipse新建项目不可选择Java Project问题解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-07-07
  • Java Calendar类的使用总结实例

    Java Calendar类的使用总结实例

    这篇文章主要介绍了Java Calendar类的使用总结实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-03-03
  • java 通过cmd 调用命令启动tomcat的操作

    java 通过cmd 调用命令启动tomcat的操作

    这篇文章主要介绍了java 通过cmd 调用命令启动tomcat的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-11-11
  • 浅谈JVM中的JOL

    浅谈JVM中的JOL

    我们天天都在使用java来new对象,但估计很少有人知道new出来的对象到底长的什么样子?对于普通的java程序员来说,可能从来没有考虑过java中对象的问题,不懂这些也可以写好代码。今天,给大家介绍一款工具JOL,可以满足大家对java对象的所有想象。
    2021-06-06
  • Java创建数组的几种方式总结

    Java创建数组的几种方式总结

    下面小编就为大家带来一篇Java创建数组的几种方式总结。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-10-10
  • spring IOC中三种依赖注入方式

    spring IOC中三种依赖注入方式

    这篇文章主要介绍了spring IOC中三种依赖注入方式,Spring使用注入方式,为什么使用注入方式,这系列问题实际归结起来就是一句话,Spring的注入和IoC(本人关于IoC的阐述)反转控制是一回事
    2021-08-08
  • java  StringBuilder类的详解及简单实例

    java StringBuilder类的详解及简单实例

    这篇文章主要介绍了java StringBuilder类的详解及简单实例的相关资料,实现了StringBuilder类的追加、插入、替换、删除等操作,需要的朋友可以参考下
    2017-08-08
  • 用java WebSocket做一个聊天室

    用java WebSocket做一个聊天室

    这篇文章主要为大家详细介绍了用java WebSocket做一个聊天室,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-10-10
  • java如何将一个float型数的整数部分和小数分别输出显示

    java如何将一个float型数的整数部分和小数分别输出显示

    这篇文章主要介绍了java如何将一个float型数的整数部分和小数分别输出显示,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-07-07

最新评论