linux设置jar包开机自启动

注意:全部在root权限下进行操作,如果是普通用户,sudo su切换到root用户下操作;

1、上传脚本到服务器:jar相同目录下fault-logic-service.sh

#!/bin/bash

#注意:运行环境变化时请注意修改jdk的环境变量
export JAVA_HOME=/usr/local/java
export JRE_HOME=/usr/local/java/jre1.8.0_321
export CLASSPATH=$JRE_HOME/lib/rt.jar:$JRE_HOME/lib/ext
export PATH=$PATH:$JRE_HOME/bin


AppName=result-logic-processor.jar
#JVM参数
JVM_OPTS="-Dname=$AppName  -Duser.timezone=Asia/Shanghai -Xms512M -Xmx512M -XX:MetaspaceSize=256M -XX:MaxMetaspaceSize=512M -XX:+HeapDumpOnOutOfMemoryError -XX:+PrintGCDateStamps  -XX:+PrintGCDetails -XX:NewRatio=1 -XX:SurvivorRatio=30 -XX:+UseParallelGC -XX:+UseParallelOldGC -Xdebug -Xrunjdwp:transport=dt_socket,suspend=n,server=y,address=8889"
APP_HOME=/home/htkj/FAULT-LOGIC
LOG_PATH=$APP_HOME/logs
BIN_PATH=$APP_HOME/bin

if [ "$1" = "" ];
then
    echo -e "\033[0;31m 未输入操作名 \033[0m  \033[0;34m {start|stop|restart|status} \033[0m"
    exit 1
fi

if [ "$AppName" = "" ];
then
    echo -e "\033[0;31m 未输入应用名 \033[0m"
    exit 1
fi
function start()
{
    echo "Start $AppName"
    PID=`ps -ef |grep java|grep $AppName|grep -v grep|awk '{print $2}'`
    if [ x"$PID" != x"" ]; then
        echo "$AppName is running..."
    else
        nohup java -jar  $JVM_OPTS $BIN_PATH/$AppName > $LOG_PATH/nohup.out
        echo "Start $AppName success..."
    fi
}
function stop()
{
    echo "Stop $AppName"
    PID=""
    query(){
        PID=`ps -ef |grep java|grep $AppName|grep -v grep|awk '{print $2}'`
    }
    query
    if [ x"$PID" != x"" ]; then
        kill -TERM $PID
        echo "$AppName (pid:$PID) exiting..."
        while [ x"$PID" != x"" ]
        do
            sleep 1
            query
        done
        echo "$AppName exited."
    else
        echo "$AppName already stopped."
    fi
}

function restart()
{
    stop
    sleep 2
    start
}

function status()
{
    PID=`ps -ef |grep java|grep $AppName|grep -v grep|wc -l`
    if [ $PID != 0 ];then
        echo "$AppName is running..."
    else
        echo "$AppName is not running..."
    fi
}

case $1 in
    start)
    start;;
    stop)
    stop;;
    restart)
    restart;;
    status)
    status;;
    *)

esac
 

2、查看服务器配置的jdk环境变量:cat  /etc/profile

export JAVA_HOME=/usr/local/java

export JRE_HOME=/usr/local/java/jre1.8.0_321

export CLASSPATH=$JRE_HOME/lib/rt.jar:$JRE_HOME/lib/ext

export PATH=$PATH:$JRE_HOME/bin

复制到脚本中

3、将jdk的环境变量放在启动脚本fault-logic-service.sh的最上面:

 

4、测试启动脚本fault-logic-service.sh:查看日志,是否启动成功

   sh /home/htkj/FAULT-LOGIC/bin/fault-logic-service.sh start  >  /home/Auto_start_test_log.txt 2>&1 &

   注意事项:若报错java not find,修改启动脚本,

nohup  java -jar  $JVM_OPTS $BIN_PATH/$AppName > $LOG_PATH/nohup.out

  ---à

nohup /usr/local/java/jre1.8.0_321/bin/java -jar  $JVM_OPTS $BIN_PATH/$AppName > $LOG_PATH/nohup.out  红色字体为服务器jdk实际目录,注意修改

注意:如果执行脚本报错: ault-logic-service.sh: Syntax error: "(" unexpected

处理如下:

原因:

兼容性问题,因为linux将sh默认指向了dash,而不是bash

解决:

#在root下面执行 dpkg-reconfigure dash,选择no后回车,然后执行测试脚本就可以解决问题

 

 

5、设置自启动命令

①在linux中执行命令: cd /etc/

②修改rc.local

执行命令:vi rc.local

然后按下键盘上的【i】键进入修改模式

接着在代码尾部添加代码:

cd 脚本目录

sh   脚本目录/fault-logic-service.sh  start  >  日志目录/Auto_start_log.txt 2>&1 &

#第一句为进入你项目所在的目录,我这里把项目放的目录

#第二句执行该目录下的sh文件

##说明

如果不提前进入所在目录,直接执行第二句,也会开机自启动,但是日志文件会在根目录下的log文件中。只有先进入,再执行,项目的日志文件才会在test文件夹下

##bin文件中有jar包、fault-logic-service.sh、以及jar包的日志文件logs

然后先按下【esc】键,再按下【:】键,在光标闪烁处输入:wq。按回车,完成修改

③、设置执行权限。

输入命令:chmod +x /etc/rc.local

          chmod +x  脚本目录/fault-logic-service.sh

或者:chmod 755 脚本目录/fault-logic-service.sh

chmod +x /etc/rc.local

④、在linux中输入命令 :reboot 重启服务器

⑤、重启后,输入:  ps -ef|grep java查看jar包是否启动

6、注意事项:rc.local 中添加日志记录,查看重启时是否执行

echo "执行任务开始"> /home/successLog.txt

7、查看jar的权限,如果不可执行,chmod  777  XXX.jar

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值