글래스 피시 서버가 실행 중인지 (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
봅니다 스크립트를 호출 할 수/빈/쉬 추가 :'*/2 * * * */빈/쉬 /usr/home/user1/server.check.sh >>는/usr/홈/사용자 1/cron.log' – fedorqui