Tomcat이 쉘 스크립트를 통해 시스템에서 실행되고 있는지 확인해야합니다. 그렇지 않다면 나는 프로세스 ID를 잡아서 Tomcat을 죽일 필요가있다. 그것이 어떻게 성취 될 것인가?쉘 스크립트를 통해 Tomcat이 실행 중인지 확인하십시오.
답변
를 사용하는 과정입니다,이 명령을 사용했습니다. 그것은 내 설정에서 작동하지만 사방에 실행할 수 없습니다 ... 나는 바람둥이의 두 설치, 하나는/usr/local/tomcat 8080 포트와/usr/local/tomcat_8081 포트 8081에 있습니다. 나는 '/ usr/local/tomcat/'(마지막 슬래시 포함)을 full_path로 설정해야합니다. 그렇지 않으면 tomcat_8081도 실행 중일 때 2 개의 다른 pid를 반환하기 때문입니다.
다음은이 명령이하는 일에 대한 설명입니다 :
1) ps x
당신에게 PID, TTY, STAT, 시간 실행 명령으로 주문 실행중인 프로세스의 목록을 제공합니다.
2) grep [full_path_to_tomcat]
을 적용하면 해당 목록에서 [full_path_to_tomcat] 패턴을 찾을 수 있습니다. 예를 들어, ps x | grep /usr/local/tomcat/
를 실행하면 다음과 같은 당신을 얻을 수 있습니다 : 우리는 패턴과 일치 인해 grep /usr/local/tomcat/
에 하나가 아닌 두 항목을 얻을으로
13277 ? Sl 7:13 /usr/local/java/bin/java -Djava.util.logging.config.fil
e=/usr/local/tomcat/conf/logging.properties [...] -Dcatalina.home=/usr/local/tomca
t [...]
21149 pts/0 S+ 0:00 grep /usr/local/tomcat/
3)의 그것을 제거 할 수 있습니다. -v
은 grep의 반전 일치 플래그로 패턴과 일치하지 않는 행만 선택합니다. 따라서, 위의 예에서, ps -x | grep /usr/local/tomcat/ | grep -v grep
를 사용하여 반환합니다
13277 ? Sl 7:13 /usr/local/java/bin/java -Djava.util.logging.config.fil
e=/usr/local/tomcat/conf/logging.properties [...] -Dcatalina.home=/usr/local/tomca
t [...]
4), 지금 우리는 우리가 필요로하는 PID를 가지고있다. 아직도, 우리는 모든 나머지를 벗겨야합니다. 이를 위해 cut
을 사용하십시오. 이 명령은 FILE 또는 표준 출력에서 섹션을 제거합니다. -d 옵션은 분리 문자이고 -f는 필요한 필드입니다. 큰. 그래서 우리는 공백 ('')을 구분 기호로 사용할 수 있고, pid에 해당하는 첫 번째 필드를 얻을 수 있습니다. ps x | grep /usr/local/tomcat/ | grep -v grep | cut -d ' ' -f 1
를 실행하면 반환합니다
13277
당신이 필요로하는 것입니다.스크립트에서 사용하기 위해서는 간단합니다
#replace below with your tomcat path
tomcat_path=/users/tomcat/apache-tomcat-8.0.30
pid=$(ps x | grep "${tomcat_path}" | grep -v grep | cut -d ' ' -f 1)
if [ "${pid}" ]; then
eval "kill ${pid}"
fi
Verbose and good answer. 내가 할 유일한 일은'cut' 대신'awk'을 사용하는 것입니다 : 'ps axuw | grep path/to/tomcat | grep -v grep | awk '{print $ 2} '' – atripes
내게는 작동하지 않습니다 ... 내 바람둥이가 있습니다. "ps -ef | grep tomcat"으로 pid를 볼 수 있지만 위의 명령은 아무 것도 반환하지 않습니다. –
@WilliansMartins tomcat_path를 실제 경로로 대체 했습니까? 당신은 단지'grep tomcat'을 대신 사용할 수있는 하나의 tomcat 설치 만 가지고 있습니다 . – Tarek
Tomcat의 기본 포트는 8080입니다. grep을 사용하여 비교 루프에서 포트 상태를 사용할 수 있습니다.
#!/bin/bash
STAT=`netstat -na | grep 8080 | awk '{print $7}'`
if [ "$STAT" = "LISTEN" ]; then
echo "DEFAULT TOMCAT PORT IS LISTENING, SO ITS OK"
elif [ "$STAT" = "" ]; then
echo "8080 PORT IS NOT IN USE SO TOMCAT IS NOT WORKING"
## only if you defined CATALINA_HOME in JAVA ENV ##
cd $CATALINA_HOME/bin
./startup.sh
fi
RESULT=`netstat -na | grep 8080 | awk '{print $7}' | wc -l`
if [ "$RESULT" = 0 ]; then
echo "TOMCAT PORT STILL NOT LISTENING"
elif [ "$RESULT" != 0 ]; then
echo "TOMCAT PORT IS LISTENINS AND SO TOMCAT WORKING"
fi
당신이 바람둥이가 실행되고 있는지 여부 만 확인합니다 tomcat.this의 기본 포트를 사용하는 경우가 script.you의 그렙 포트 8080을 비교할 수 있습니다 이런 식으로. 는 당신이 포트를 사용하여 프로세스를 확인할 수 있습니다 lsof를 -i : 8080 // 당신이이 명령을 사용하여 프로세스를 종료하여 포트를 해제하려면 가 75,782을 죽일 포트를 8080
을 사용하는 경우 //를위한 경우 하지만,
ps x | grep [full_path_to_tomcat] | grep -v grep | cut -d ' ' -f 1
당신은 조심해야 : 예 75782은 실행중인 프로세스를 얻기 위해 포트
그렇게 할 수있는 쉬운 방법은 다음과 같습니다 당신은
ps -ef | grep tomcat
이 명령을 사용하여 얻을 수 있습니다 :
user [id-to-kill] Date [tomcat-path]
마지막 단계 프로세스를 죽이고있다
sudo kill -9 [id-to-kill]
축하합니다. 프로세스가 종료되었습니다. lol
톰캣이 실행 중이 지 않은 프로세스도 보여줍니다'1000 8309 4960 0 20:51 pts/1 00:00:00 grep - color = auto tomcat' 또는 아무것도 찾지 않으면 존재하지 않으면 ('neo44'),'$ ps aux | grep neo44 1000 8397 0.0 0.0 13640 952 pts/1 S + 20:53 0:00 grep --color = auto neo44' – prayagupd
'ps -ef | grep tomcat'은 "grep tomcat"프로세스를 포함하여 "tomcat"을 가진 출력에서 아무것도 찾지 않습니다. -v 플래그를 사용하여 이렇게 필터링 할 수 있습니다.'ps -ef | grep 바람둥이 | grep -v grep','pgrep' 또는 좀 더 배포판과 설정에 특화된'service tomcat status' 같은 것을 사용하십시오. – CodeShane
서버 주소로 wget을 사용하고 상태를 확인하는 한 가지 방법입니다. 이 링크 여기
확인 :
http://www.velvettools.com/2013/07/shell-script-to-check-tomcat-status-and.html#.VX_jfVz-X1E
TOMCAT_HOME=/usr/local/tomcat-folder/
is_Running()
{
wget -O - http://yourserver.com/ >& /dev/null
if(test $? -eq 0) then
return 0
else
return 1
fi
}
stop_Tomcat()
{
echo "shutting down......"
$TOMCAT_HOME/bin/shutdown.sh
}
start_Tomcat()
{
echo "starting......"
$TOMCAT_HOME/bin/startup.sh
}
restart()
{
stop_Tomcat
sleep 10
kill_Hanged_Processes
start_Tomcat
sleep 60
}
- 1. Rhythmbox가 파이썬을 통해 실행 중인지 확인하십시오.
- 2. Listener가 실행 중인지 확인하십시오.
- 3. 서버가 실행 중인지 확인하십시오.
- 4. 서비스가 실행 중인지 확인하십시오.
- 5. 앱이 Heroku에서 실행 중인지 확인하십시오.
- 6. Quartz1.6에서 작업이 실행 중인지 확인하십시오.
- 7. 부모 스레드가 실행 중인지 확인하십시오.
- 8. WiX에서 서비스가 실행 중인지 확인하십시오.
- 9. LPC17xx : RTC가 실행 중인지 확인하십시오.
- 10. 쉘 스크립트를 통해 여러 개의 쿼리 실행
- 11. GDB 스크립팅 : 어떤 함수가 실행 중인지 확인하십시오.
- 12. Tomcat이 실행 중입니까?
- 13. ahk (autohotkey) 스크립트가 실행 중인지 확인하십시오.
- 14. 프로그램이 원격 데스크톱에서 실행 중인지 확인하십시오.
- 15. 응용 프로그램이 이미 실행 중인지 확인하십시오.
- 16. .NET 다른 응용 프로그램이 실행 중인지 확인하십시오.
- 17. 다른 응용 프로그램이 항상 실행 중인지 확인하십시오.
- 18. PHP : 프로세스가 pid로 실행 중인지 확인하십시오.
- 19. 특정 wsgi 처리기가 실행 중인지 확인하십시오.
- 20. 시간 초과가 실행 대기 중인지 확인하십시오.
- 21. syncdb가 실행 중인지 프로그램 적으로 확인하십시오.
- 22. 유닉스에서 프로세스 (서버)가 실행 중인지 확인하십시오.
- 23. 쉘 스크립트에서 $ ORACLE_HOME var을 확인하십시오.
- 24. PHP를 통해 Apache에서 스크립트가 실행 중인지 확인하기
- 25. 쉘 스크립트를 통해 메일 보내기
- 26. 자바를 통해 쉘 스크립트를 실행하려면
- 27. 직렬 포트가 수신 중인지 확인하십시오.
- 28. 쉘 스크립트를 통해 C++ 실행 파일의 반환 값 확인
- 29. 를 PyDev>는 쉘 스크립트를 통해 실행/mpirun이
- 30. Slackware에서 쉘 스크립트를 통해 IP 주소 변경
이 정의는 "실행". 일반적인 정의에 따르면 실행 중이 아닌 프로세스 ID가 없으므로 죽일 수 없습니다. 나는 여기서 당황하지 않고있다. 당신은 아마도 "요청을 적절히 처리하고있다"는 것을 의미 할 것이며 일단 정의 할 수 있다면 스크립트를 작성하는 방법을 알게 될 것입니다. (또한, 당신은 Serverfault를 시도해보십시오, 그들은 시스템 모니터링에 대한 더 많은 경험을 가지고 있습니다.) – derobert
@BugFinder :이 명령을 사용해 보았습니다 : pid = $ (ps -fe | grep tomcat). 이것은 컨텍스트 '바람둥이'로 모든 프로세스를 얻습니다. killall을 사용했다. –