java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > Linux启动Java Python管理脚本

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

作者: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管理脚本的资料请关注脚本之家其它相关文章!

您可能感兴趣的文章:
阅读全文