01 01 * * * /usr/java/j2sdk1.3.1_02/bin/java -Dfile.encoding=8859_1 -classpath /usr/local/sms/sender sms.SMSmanager
위 내용이 입력한 crontab 내용이다. (매일 새벽 1시 1분에 자바크래스를 실행한다)
시스템상에 path랑 claspath를 잡아 뒀더래도 crontab에서는 인식하지 않는다..
그래서 java명령에 PATH를 포함하였고 -classpath 옵션을 주었다.
또한 팀으로 -Dfile.encoding= 옵션으로 인코딩을 지정해줘야 한다. 크론탭으로 실행될때는 한글이 깨지는 상황이 발생하기 때문.
crontab -l : cron정의 내용리스트보기
crontab -e : vi로 cron 정의내용 수정하기
crontab -r : cron 삭제하기
분(0-59)시(0-23)일(1-31)월(1-12)일(0-7)
출처 - http://javagomtang.tistory.com/archive/200811, http://www.okjsp.pe.kr/seq/31301
import java.util.*;
public class CurrentTime
{ static public void main(String[] args) { System.out.println("Current Time is " + new Date()); } } |
$> javac CurrentTime.java
|
각 필드는 공백으로 구분됩니다. 스케줄링 필드들에서 *는 매분, 매시, 매일,... 등의 의미입니다. 설정하는 값은 ","를 이용하여 여러개를 입력할 수 있습니다.
필드 |
대상 |
설정 가능한 값 |
필드1 |
분 |
0 - 59, *
|
필드2 |
시 |
0 - 23, * |
필드3 |
일 |
1 - 12, * |
필드4 |
월 |
1 - 31, * |
필드5 |
요일 |
0 - 6 (0=sunday), * |
예제)
$> vi crontab.cron
* * * * * /usr/local/java/bin/java -classpath "/root" CurrentTime > /root/cron.log
|
$> vi crontab.cron * * * * * currenttime.sh > /root/cron.log
$> vi currenttime.sh
PATH=$PATH:/usr/local/java/bin; export PATH
CLASSPATH=$CLASSPATH:/root; export CLASSPATH
java CurrentTime > /root/cron.log |
$> vi currenttime.sh
. .profile
java CurrentTime > /root/cron.log $> chmod 777 currenttime.sh
|
$> crontab crontab.cron
|
$> crontab -l CurrentTime> /root/cron.log
|
$> vi /root/cron.log
Current Time is Thu Dec 09 14:38:00 KST 2004
|
안녕하세요 이번에 자바로 소켓데몬을 하나만들었는데요.
유닉스에서 크론텝에 등록시켜서 사용할라고 하는데 자바가 실행이 안되고..
sh파일을 바로 기동시키면 돌아가고. 크론텝에 등록된건 안되고해서 현재 손수 기동시켜주고있습니다.;;
0,5,10,15,20,25,30,35,40,45,50,55 * * * * /ktfinterface/ktfpps3g/script/act3gboot.sh
크론텝 안에 내용이구요..
sh파일 내용은..
#!/bin/ksh
#--------------------------------------
# 사용자 LIB PATH 설정
# System LIB PATH 설정
LIB_CLASS=/oracle/app/oracle/product/10.2.0/jdbc/lib/classes12.jar
MAIN_PGM=/ktfinterface/ktfpps3g/bin/ib3ginf_deploy.jar
#**************************************
# 사용되는 LIB LINK 설정
LINK_CLASS=$LIB_CLASS:$MAIN_PGM
#--------------------------------------
MPGMNM=rms3gact
RUNPGM=act.rms3gact
#--------------------------------------
####################### rms3gact ##########################
check=`ps -ef|grep "svc.startd" | grep -v grep |awk !/grep/`
#
check=`ps -ef|grep "rms3gact" | grep -v grep | wc -w`
if [ $check == 0 ];then
echo '---'
echo '------------------------------------------------'
echo '| |'
echo '| rms3gact 기동(RMS) |'
echo '| |'
echo '------------------------------------------------'
java -D$MPGMNM -classpath $LINK_CLASS $RUNPGM $MPGMNM &
echo ' 기동 완료 '
fi
echo 'endend'
#==============================================================
요로콤 해놨습니다. 여기저기 검색해보니 자바는 환경을 따로잡아야된다고해서 여러가지 시도를 해봤는데.
몬하는건지 안되는건지 ㅜ.ㅜ
그럼 많은 지식 부탁드리겠습니다.
// =======================================================================
#!/bin/sh
# PATH 설정
PATH=.:(경로)/jdk1.5.0_05/bin/:$PATH
export PATH
# CLASSPATH 설정
CLASSPATH=.:(경로)/jdk1.5.0_05/lib/tools.jar:
export CLASSPATH
# 실행파일 Directory 이동
cd (경로)/bin
# 현재날짜
DATE=`date '+%Y%m%d'`
# 프로그램 실행
java XXXXX >> (경로)/log/$DATE.log
// =======================================================================
위에 까지가 현재 제가 사용하고 있는 crontab 에 등록하여 java를 실행시키는 쉘 명령어 입니다.
위에 처럼 자바의 환경을 잡아 준뒤에 실행해 보시면 정상적으로 작동을 할 것 입니다.
제가 사용하는 서버는 솔라리스와 HP 서버 두군데를 사용하고 있는데 정상적으로
crontab에서 실행하고 있습니다.
===================================================================================
수동으로 실행하면되고 크론탭에서 안되는 근본 이유는 아마도
수동으로 실행하시는 계정의 .profile에 설정된 각종 환경변수 셋팅이 crontab으로 실행시에는 없기 때문입니다
따라서 crontab에서 실행하는 /ktfinterface/ktfpps3g/script/act3gboot.sh 파일 상단에
#!/bin/ksh
계정홈디렉토리/.profile
추가하시면 crontab에서도 실행될겁니다
'Development > Java' 카테고리의 다른 글
java - 현재 시간 확인 (0) | 2012.07.18 |
---|---|
java - java.lang.NullPointerException 에러 (1) | 2012.05.24 |
java - ORM (0) | 2012.05.15 |
JNDI(Java Naming and Directory Interface) (0) | 2012.05.10 |
java - thread example (0) | 2012.05.05 |