2013-02-21 3 views
0

글래스 피시 서버가 실행 중인지 (FreeBSD 시스템에 설치되어 있는지) 확인하기 위해 작성된 스크립트가 있습니다. 그렇지 않은 경우 스크립트는 Java 프로세스를 종료하려고 시도합니다 중단없는 한 다음 발행 가 asadmin start-도메인이 스크립트는 시간100 % 성공 명령 줄에서 실행glassfish 시작 스크립트가 crontab을 통해 실패 함

경우 명령. cron 탭에서 실행하면 asadmin start-domain 행을 제외한 모든 행이 실행됩니다. 실행되지 않거나 완료되지 않습니다. 즉,이 스크립트가 실행 된 후 서버가 실행되지 않습니다.

glassfish 또는 서버를 시작하는 데 사용되는 asadmin 유틸리티에 익숙하지 않은 분이라면 forked 프로세스가 사용된다는 것을 이해할 수 있습니다. 이것이 cron을 통해 문제를 일으킬 수 있습니까?

다시 오늘 모든 테스트에서 명령 줄에서 실행할 때 스크립트가 완료 될 때까지 실행됩니다. 일단 그것이 cron을 통해 실행되면, 그것은 완료되지 않습니다 ... crontab에서 이것을 실행하는 것이 다른 것은 무엇입니까 ???

사전 도움을 주셔서 감사합니다 ... 나는이 작품을 만들기 위해 노력하고 내 머리카락을 당겨!

또한
#!/bin/bash 

JAVA_HOME=/usr/local/diablo-jdk1.6.0/; export JAVA_HOME 

timevar=`date +%d-%m-%Y_%H.%M.%S` 
process_name='java' 
get_contents=`cat urls.txt` 

for i in $get_contents 
do 
echo checking $i 
statuscode=$(curl --connect-timeout 10 --write-out %{http_code} --silent --output /dev/null $i) 
case $statuscode in 
    200) 
     echo "$timevar $i $statuscode okay" >> /usr/home/user1/logfile.txt 
     ;; 
    *) 
     echo "$timevar $i $statuscode bad" >> /usr/home/user1/logfile.txt 
     echo "Status $statuscode found" | mail -s "Check of $i failed" [email protected] 
     process_id=`ps acx | grep -i $process_name | awk {'print $1'}` 
     if [ -z "$process_id" ] 
     then 
      echo "java wasn't found in the process list" 
     else 
      echo "Killing java, currently process $process_id" 
      kill -9 $process_id 
     fi 
     /usr/home/user1/glassfish3/bin/asadmin start-domain domain1 
     ;; 
esac 
done 

, 그냥 완성도, 여기에 크론 탭에서 항목입니다 :

*/2 * * * * /usr/home/user1/server.check.sh >> /usr/home/user1/cron.log 
+0

봅니다 스크립트를 호출 할 수/빈/쉬 추가 :'*/2 * * * */빈/쉬 /usr/home/user1/server.check.sh >>는/usr/홈/사용자 1/cron.log' – fedorqui

답변

0

좋아요 ... 다른 사이트에이에 대한 답을 찾았지만 나는 내가 추가 거라고 생각 나중에 참조 할 수 있도록 여기에 응답하십시오.

문제는 PATH !! java_home이 설정되었지만 java 자체는 cron 디먼에 대한 경로에 있지 않습니다. 내가 무엇을 수집 할 수 있습니다에서

*/2 * * * * env > /usr/home/user1/env.output 

은, 크론에 처음에 사용할 수있는 PATH 꽤 최소한의 :

당신의 크론 사용할 수 있습니다 어떤 경로를 볼 수있는 빠른 테스트는,이 라인을 추가합니다. java가/usr/local/bin에 있었기 때문에 나는 crontab과 kaboom의 경로에 추가했습니다! 그것은 일했다!

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin 

*/2 * * * * /usr/home/user1/server.check.sh >> /usr/home/user1/cron.log 
관련 문제