Linux下Java/Python启动管理脚本

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= J A V A H O M E / b i n : JAVA_HOME/bin: JAVAHOME/bin:PATH
export CLASSPATH=.😒{JAVA_HOME}/lib

service name

SERVICE_ROOT=$(dirname ( d i r n a m e " (dirname " (dirname"PWD"))
SERVICE_DIR=$(cd $(dirname 0 ) ; p w d ) S E R V I C E N A M E = t e s t . j a r J A R N A M E = 0); pwd) SERVICE_NAME=test.jar JAR_NAME= 0);pwd)SERVICENAME=test.jarJARNAME=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= ( p s a u x ∣ g r e p " (ps aux | grep " (psauxgrep"CMD" | grep -v grep | awk '{print KaTeX parse error: Expected 'EOF', got '}' at position 2: 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 KaTeX parse error: Expected 'EOF', got '&' at position 19: … >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= ( p s a u x ∣ g r e p " (ps aux | grep " (psauxgrep"CMD" | grep -v grep | awk '{print KaTeX parse error: Expected 'EOF', got '}' at position 2: 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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Linux中,可以使用Java调用Python命令。可以使用Java的Runtime类来执行命令行命令。下面是一个示例代码,展示了如何在Java中调用Python命令: ```java import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class JavaCallPython { public static void main(String\[\] args) { try { // 创建Runtime对象 Runtime runtime = Runtime.getRuntime(); // 执行Python命令 Process process = runtime.exec("python3 /path/to/python_script.py"); // 获取命令执行的输出结果 BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream())); String line; while ((line = reader.readLine()) != null) { System.out.println(line); } // 等待命令执行完成 int exitCode = process.waitFor(); System.out.println("命令执行完成,退出码:" + exitCode); } catch (IOException | InterruptedException e) { e.printStackTrace(); } } } ``` 在上面的示例中,我们使用Java的Runtime类的exec()方法执行了一个Python命令。你需要将`/path/to/python_script.py`替换为你实际的Python脚本的路径。然后,我们通过读取命令的输出结果来获取Python脚本的执行结果。最后,我们使用waitFor()方法等待命令执行完成,并获取命令的退出码。 希望这个示例能帮助到你。如果你有任何其他问题,请随时提问。 #### 引用[.reference_title] - *1* [在linux中使用定时任务用java调用python程序](https://blog.csdn.net/weixin_45872600/article/details/128547273)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值