2016-12-19 1 views
-1

시작 및 정지 스크립트가 내부에 있고 Linux 서버에서 상태를 제공하는 스크립트가 필요합니다. 내 시작 스크립트는 다음과 같습니다. 응용 프로그램 상태를 얻기 위해 몇 가지 인수/명령을 추가 할 수 있는지 알려주실 수 있습니까?응용 프로그램 상태 스크립트

#!/bin/ksh 

java_home=`cat /apps/abc.properties | grep "$1|" | cut "-d|" -f2` 
service_executable=`cat /apps/abc.properties | grep "$1|" | cut "-d|" -f3` 
service_home=`cat /apps/abc.properties | grep "$1|" | cut "-d|" -f4` 
service_opts=`cat /apps/abc.properties | grep "$1|" | cut "-d|" -f5` 

export JAVA_HOME=$java_home 
export PATH=$JAVA_HOME/bin:$PATH 
echo start $service_home 
cd $service_home/bin 
nohup $service_executable start $service_opts 

abc.properties 아래가

abc-3.7.3|/apps/java/jdk1.8.0_66|rmc|/apps/rmc/abc-3.7.3|-M-Drmc.mmc.bind.port=8770 
abc-3.7.3-spii|/apps/java/jdk1.8.0_66|rmc|/apps/rmc/abc-3.7.3-spii|-M-Drmc.mmc.bind.port=8770 

내가 포트 번호를 사용하여 응용 프로그램의 각 버전 (JVM)을 확인하고 나에게 예를 들어 ABC-3.7.3에 대한 상태를 줄 수있는 scrpit을 원한다 "실행 값 "/ abc-3.7.3-spii"아래로 ".

+2

코드 앞에 4 개의 공백을 추가하십시오. [editing-help] (http://stackoverflow.com/editing-help)를보십시오. – Cyrus

+0

명령에 $()가 누락되었습니다. 예를 들면 다음과 같습니다. $ (cat /apps/abc.properties | grep "$ 1 |"| cut "-d |"-f2). 또한 첫 번째 줄은 #!으로 시작해야합니다. – codeforester

+0

@Mike, FYI - 귀하의 편집은 8 칸 들여 쓰기를 추가하고있었습니다. 정확하게 4이어야합니다. –

답변

1

빠른 버전은 응용 프로그램 이름과 포트 번호를 입력 파일 (예 : APP + stuff + PORT)에서 추출한 다음 해당 포트가 열려 있는지 (예 : 포트 번호에 대한 netstat 출력 grep).

while IFS="|=" read App _ _ _ _ Port; do 
    netstat -lnt | grep -qw ":$Port" && echo "$App : running" || echo "$App : down" 
done < abc.properties 

그것은 충분히 좋은가요 : 이 그냥 않는 매우 짧은 형태는?

+0

일반적으로 이것은보기에 좋습니다!몇 가지 메모 - 자리 표시 자에 사용할 일반 변수 이름은'_'이며 비 - 자리 표시 자 변수는 실제로 네임 스페이스 (POSIX에서 예약 됨)와의 충돌을 피하기 위해 적어도 하나의 소문자가있는 이름을 가져야합니다 (http : //pubs.opengroup.org/onlinepubs/009695399/basedefs/xbd_chap08.html)을 참조하십시오. –

+0

(예,'read'는 환경 변수가 아닌 일반적인 쉘 변수를 만들고 있지만 쉘 변수를 설정하면 비슷한 이름의 환경 변수를 덮어 씁니다. 즉, 네임 스페이스가 공유됨을 의미합니다). –

+0

@CharlesDuffy, 지적 해 주셔서 고맙습니다. 이제는 POSIX를 준수합니다 : P – czvtools

0

답장을 보내 주셔서 감사합니다. "lsof -Pi : 8080 -sTCP : LISTEN -t>/dev/null;"을 사용했는데 RHEL6 (4.82)에서 제대로 작동했지만 RHEL5에서 오류가 발생했습니다. 지원되지 않는 TCP/TPI 정보 선택 : C lsof를 : 지원되지 않는 TCP/TPI 정보 선택 : P lsof를 : 지원되지 않는 TCP/TPI 정보 선택 : lsof를 : 지원되지 않는 TCP/TPI 정보 선택 : L lsof를

lsof를 아래 : 지원되지 않는 TCP/TPI 정보 선택 : I lsof : 지원되지 않는 TCP/TPI 정보 선택 : S lsof : 지원되지 않는 TCP/TPI 정보 선택 : T lsof : 지원되지 않는 TCP/TPI 정보 선택 : E lsof : 지원되지 않는 TCP/TPI 정보 선택 : N lsof 4.78