Ubuntu 10.10에서 이와 같이 실행한 다음 백그라운드에서 프레젠테이션 서버를 시작하는 jar 파일이 있습니다.
nohup java \
-jar /pekooz/exhibitor-1.5.1/lib/exhibitor-1.5.1-jar-with-dependencies.jar \
-c file --fsconfigdir /opt/exhibitor/conf \
--hostname machineA > exhibitor.out &
crontab
이제 전시자 서버가 실행 중인지 확인 하려고 합니다 . 실행 중이 아니면 다시 시작하여 crontab을 사용하기로 결정하고 다음 단계에 따라 crontab을 설정했습니다.
- 를 실행하여 새로운 crontab을 생성했습니다
crontab -e
. 방금 연 파일에 다음 줄을 추가하세요.
*/5 * * * * pgrep -f exhibitor || nohup java -jar /pekooz/exhibitor-1.5.1/lib/exhibitor-1.5.1-jar-with-dependencies.jar -c file --fsconfigdir /opt/exhibitor/conf --hostname machineA > exhibitor.out
파일을 저장하고 편집기를 종료합니다.
그래서 내 crontab이 제대로 작동하는지 확인하기 위한 테스트 목적으로 먼저 다음과 같이 전시 서버를 시작했습니다.
$ nohup java \
-jar ./exhibitor-1.5.1/lib/exhibitor-1.5.1-jar-with-dependencies.jar \
-c file --fsconfigdir /opt/exhibitor/conf \
--hostname machineA > exhibitor.out &
[1] 14401
$ nohup: ignoring input and redirecting stderr to stdout
그런 다음 위에 표시된 단계에 따라 crontab을 설정했습니다. 이 작업을 수행 한 후 kill -9 14401
crontab에 의해 전시자 서버가 자동으로 다시 시작되었는지 확인할 수 있었습니다. 분명히 시작되지 않았고 오류도 표시되지 않았습니다. 아래는 로그입니다 -
$ sudo tail -f /var/log/syslog
Nov 5 17:21:45 machineA crontab[12755]: (cronusapp) BEGIN EDIT (cronusapp)
Nov 5 17:23:17 machineA crontab[12755]: (cronusapp) END EDIT (cronusapp)
Nov 5 17:25:01 machineA CRON[13671]: (root) CMD ( puppet apply /etc/puppet/manifests/motd-stats.pp >>$PUPPET_LOG 2>&1)
Nov 5 17:25:01 machineA CRON[13672]: (root) CMD (command -v debian-sa1 > /dev/null && debian-sa1 1 1)
Nov 5 17:25:01 machineA CRON[13673]: (cronusapp) CMD (pgrep -f exhibitor || nohup java -jar /pekooz/exhibitor-1.5.1/lib/exhibitor-1.5.1-jar-with-dependencies.jar -c file --fsconfigdir /opt/exhibitor/conf --hostname machineA > exhibitor.out)
Nov 5 17:25:01 machineA postfix/pickup[2345]: 2B0D8819F9: uid=78402 from=<cronusapp>
Nov 5 17:25:01 machineA postfix/cleanup[13679]: 2B0D8819F9: message-id=<[email protected]>
Nov 5 17:25:01 machineA postfix/qmgr[25623]: 2B0D8819F9: from=<[email protected]>, size=814, nrcpt=1 (queue active)
Nov 5 17:25:01 machineA postfix/local[13681]: 2B0D8819F9: to=<[email protected]>, orig_to=<cronusapp>, relay=local, delay=0.11, delays=0.07/0/0/0.04, dsn=2.0.0, status=sent (delivered to mailbox)
Nov 5 17:25:01 machineA postfix/qmgr[25623]: 2B0D8819F9: removed
내가 여기서 뭘 잘못하고 있는 걸까? 내 crontab이 작동하지 않는 이유는 무엇입니까? 어떤 이유로든 전시업체 서버가 다운되면 자동으로 다시 시작하면 됩니다.
답변1
java
/usr/bin
디렉토리 에 있나요? 기본적으로 crontab
최소값이 있습니다 PATH
. crontab에서 설정 JAVA_HOME
하고 다음을 수행해야 할 수도 있습니다.PATH
*/5 * * * * JAVA_HOME=/opt/java/latest;export JAVA_HOME; \
PATH=$PATH:$JAVA_HOME/bin; \
pgrep -f exhibitor || nohup java \
-jar /pekooz/exhibitor-1.5.1/lib/exhibitor-1.5.1-jar-with-dependencies.jar \
-c file --fsconfigdir /opt/exhibitor/conf --hostname machineA > exhibitor.out