Cent OS 6.5 자바데몬 실행문제

   조회 2659   추천 0    

1. nohup java -Djava.awt.headless=true -mx2048m -cp .:/home/ab/GIS/mapservice/server/gms-5a-19.2.25.jar:/home/ab/GIS/mapservice/server/lib/log4j-1.2.16.jar:/home/ab/GIS/mapservice/server/lib/netty-all-4.1.31.Final.jar:/home/ab/GIS/mapservice/server/lib/commons-pool-1.6.jar:/home/ansim/GIS/mapservice/server/lib/mariadb-java-client-1.7.1.jar:/home/ab/GIS/mapservice/server/lib/mybatis-3.4.5.jar abc.MapService &

이러한 형식으로 여러 jar 파일을 실행하는 데몬이 있습니다.

그냥 sh 나 ./로 실행하면 실행이 가능한데 rc.local에 등록하여도 하드웨어 재시작시 이 데몬만 올라오지 않습니다. 권한은 777로 주어봐도 같습니다.


2. 또한 이러한 형식으로 모니터링 프로그램용 스크립트를 만들어서 ./xx.sh start 할경우 PID는 echo 되는데 실행은 되지 않습니다.

#!/bin/bash

export JAVA_HOME=/usr/local/java/jdk1.8.0_161

export PATH="$PATH:$JAVA_HOME/bin"

export CATALINA_HOME=/home/ab/GIS/mapservice/server

export PATH="$PATH:$CATALINA_HOME"

export nowDate=`date +%Y-%m-%d%t%H:%M:%S`

pName="MapService"

pCount=$(ps -ef | grep $pName | grep -v grep | grep -v $pName.sh | wc -l)

PID=$(ps -ef | grep $pName | grep -v grep | grep -v $pName.sh | awk '{print $2}')

PID_FILE='/home/ab/GIS/mapservice/server/pid/MapService.pid'

PATH_TO_JAR='/home/ab/GIS/mapservice/server/gms-5a-18.5.16.jar:/home/ab/GIS/mapservice/server/lib/log4j-1.2.16.jar:/home/ab/GIS/mapservice/server/lib/netty-3.9.0.Final.jar:/home/ab/GIS/mapservice/server/lib/commons-pool-1.6.jar:/home/ab/GIS/mapservice/server/lib/mariadb-java-client-1.7.1.jar:/home/ab/GIS/mapservice/server/lib/mybatis-3.4.5.jar abc.MapService &'

JAVA_OPT="-mx2048m"

 

if [ "$1" = start ]

then

        echo "start"

touch $PID_FILE

echo "Starting ansim with PID $PID"

echo $PID > $PID_FILE

        if [ "$pCount" -eq 0 ]

then

echo "$nowDate"

echo "start MapService"

 sh $CATALINA_HOME/startservice.sh > /dev/null 2>&1

 rm -f $CATALINA_HOME/pid/$pName.pid

ps -ef | grep $pName | grep -v grep | grep -v $pNamae.sh | awk '{print $2}' >> $CATALINA_HOME/pid/$pName.pid

fi

elif [ "$1" = stop ]

then

        echo "stop"

kill -9 `ps -ef | grep $pName | grep -v grep | grep -v $pName.sh | awk '{print $2}'`

else

        echo 'must input a valid parameter.'

        echo 'Usage: NT_callProcessd.sh {start|stop}'


재부팅 시 , 혹은 셸로 작성하였을 때만 실행이 안되는 이유가 무었인지 너무나 궁금합니다.

짐작가는 의견 있으시면 부탁드려보겠습니다..

감사합니다.

짧은글 일수록 신중하게.
박우열 2019-04
쉘을 만드셔서 재부팅해보시고 로그를 확인해보시기 바랍니다.
디버깅을 위해 쉘 상단은 "#!/bin/bash" -> "#!/bin/bash -x" 로 변경하시구요.
쉘의 대부분은 패스가 문제가 되어 실행되지 않습니다.

예) test.sh

sh test.sh > /tmp/test.out 2>&1
     
꺼꾸리1 2019-04
답변 감사합니다. 선생님
online9 2019-04
1.
-cp .:
이렇게 되어 있는데 현재 디렉토리에 별도의 클래스 파일이 추가로 존재하나요?
존재하고 그 디렉토리가 현재 사용자 디렉토리라 가정하면
cd /home/myuser
nohup java -Djava.awt . . .
이렇게 하거나 아니면 아래와 같이
nohup java -Djava.awt.headless=true -mx2048m -cp /home/myuser:/home/ab/GIS/mapservice/server/gms-5a- ...
해야되지 않을까요

2.
sh $CATALINA_HOME/startservice.sh > /dev/null 2>&1
shell을 실행할때도 nohup을 하고 마지막에 &를 추가해야 세션이 종료되어도 백그라운드에서 실행이 됩니다.
그리고 JAVA_OPT="-mx2048m" -Xmx 옵션으로 압니다.
     
꺼꾸리1 2019-04
답변 감사합니다.  선생님


QnA
제목Page 698/5709
2014-05   5148979   정은준1
2015-12   1683556   백메가
2020-09   2670   대전김형운
2023-04   2670   질문
2019-09   2670   짱시미
2021-01   2670   Lucyed
2018-12   2670   새로운차원
2020-07   2670   삐돌이슬픔이
2020-03   2670   아기견저커
2023-10   2670   Roul
2019-02   2670   witbox
2019-05   2670   늘파란
2021-08   2670   2FluF
2019-08   2670   미수맨
2020-02   2670   그린
2022-04   2670   막울었어요
2023-11   2671   코로리
2023-11   2671   atozztoa
2020-09   2671   GPGPU
2021-05   2671   김민수2
2019-11   2671   묵향ll김기준
2021-08   2671   불고기덮밥