실행되는 .java 에는 public static void main(String[] args) 메소드가 정의되어야 합니다.
다른 package 의 class 메소드를 실행하려면 main 메소드 안에 해당 코드를 등록합니다.
package com.sn.app;
public class DelayedAppMng {
public static void main(String[] args) throws Exception {
AppInfo info = new AppInfo();
info.setCnt1(-6);
info.setCnt2(2);
AppMng appMng = new AppMng();
appMng.doDelayedAppsNotify(info);
}
}
그런데, DB 를 작업하는 등 다른 외부 라이브러리를 사용할 때도 있지요.
이럴 때는 .sh 쉘 안에 관련 코드를 넣어 주고, 크론탭은 이 .sh 쉘을 실행합니다.
# /.../doDelayedAppsNotify.sh
export CLASSPATH=.:$CLASSPATH
export CLASSPATH=/.../servlet.jar:$CLASSPATH
export CLASSPATH=/.../commons-logging-1.1.jar:$CLASSPATH
export CLASSPATH=/.../classes:$CLASSPATH
/.../java -cp $CLASSPATH com...DelayedAppMng
.sh 파일은 실행할 수 있어야 합니다.
chmod a+x /.../doDelayedAppsNotify.sh
a 는 모든 사용자, u 는 owner, g 는 동일 group, o 는 other
x 는 실행 속성.
크론탭은 실행되어야 하는 .java 의 소유권자 또는 동일 그룹의 사용자 기준으로 작성하는 것이 바람직합니다.
crontab -e 를 실행하고 필요한 내용을 입력한 다음 <Esc> 키를 눌러서 명령 실행창으로 전환,
'wq' 를 입력하여 <Enter> 를 통해 저장하면 아래와 같이 자동으로 실행됩니다.
crontab: installing new crontab
등록된 크론탭의 내용을 보려면, crontab -l 을 실행합니다.
자, 크론탭에는 아래와 같은 방식으로 입력합니다.
마지막 로그 기록이 남도록 하면 좋습니다.
0 5 * * * /.../doDelayedAppsNotify.sh > /.../doDelayedAppsNotify.log
상기와 같은 경우 매일 05:00 에 해당 코드가 실행됩니다.
첫번째 m : minute 분을 입력하는 자리
두번째 h : hour 시간을 입력하는 자리
세번째 dom : day of month "몇일"을 입력하는 자리
네번째 mon : month "몇월"을 입력하는 자리
다섯번째 dow : day of week 요일을 입력하는 자리
여섯번째 command : 명령어를 입력하는 자리
첫번째에서, "0,30" 과 같이 하면 00 분과 30 분 2차례에 걸쳐 실행된다는 겁니다.
'*' 는 아무 값이나 허용된다는 뜻입니다.
'Server Oriented > Java & JSP' 카테고리의 다른 글
JSP 파라미터 암호화에 대한 생각 (0) | 2011.06.01 |
---|---|
onkeypress 이벤트 event.keyCode 를 이용하여 입력란에 Enter 엔터 입력시 검색하기 (1) | 2011.05.20 |
Ajax 와 jQuery UI 를 십분 활용할때 목록과 상세화면에 보여줄 내용 (0) | 2011.05.20 |
Generic Type Cast 방법 (1) | 2011.04.20 |
JDK1.5 이상에서 Unchecked cast ... 경고가 나올때 메소드나 선언문에 @SuppressWarnings("unchecked") 사용 (0) | 2011.04.20 |