Linux Crontab 에서 셸 스 크 립 트 를 정시 에 실행 합 니 다.

5820 단어 LinuxCentOS7Shell
앞의 블 로그 에서 필 자 는 셸 스 크 립 트 에서 maven 이 생 성 한 실행 가능 한 jar 를 어떻게 실행 하 는 지, 블 로그 주소: maven 생 성 실행 가능 한 jar 를 생 성하 고 셸 스 크 립 트 로 실행 하 는 지 말 했다.
다음은 리 눅 스에 있 는 Crontab 를 사용 하여 셸 스 크 립 트 를 정기 적 으로 실행 하 는 방법 도 작업 중 에 실제 적 으로 셸 스 크 립 트 를 정기 적 으로 실행 해 야 하 는 경우 입 니 다. 이 기록 을 하면 나중에 쉽게 볼 수 있 습 니 다. 만약 에 비슷 한 것 을 만 났 다 면 참고 할 수 있 습 니 다.
위의 블 로그 링크 를 열 면 Hello World. java 클래스 가 있 습 니 다. 클래스 코드 를 수정 하면 다음 과 같 습 니 다.
public class HelloWorld {
    public static void main(String[] args) throws Exception {
        String execDate= new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
        System.out.print("start execute..." + execDate);
        Thread.sleep(3000); // 模拟程序执行时间
        System.out.println("Hello World");
        System.out.println("execute finish...");
    }
}

그리고 Maven 을 사용 하여 실행 가능 한 jar 를 생 성 합 니 다. 구체 적 으로 위 에서 언급 한 블 로그 링크 를 참고 하여 셸 스 크 립 트 를 작성 하 십시오.
#!/bin/bash
# FileName:helloworld.sh
# Author:harvey
start_time=`date +%s`
export JAVA_HOME=/usr/local/java
export PATH=$JAVA_HOME/bin:$PATH
java -Xms512m -Xmx1024m -jar /root/data/jar/helloworld-jar-with-dependencies.jar
end_time=`date +%s`
elapse_time=$((${end_time}-${start_time}))
echo -e "
exec jar takes ${elapse_time} seconds
"

메모: 셸 스 크 립 트 파일 에 자바 의 환경 변 수 를 설정 해 야 합 니 다. 그렇지 않 으 면 crontab 를 사용 하여 스 크 립 트 를 정시 에 실행 할 때 돌아 오지 않 습 니 다.
셸 스 크 립 트 실행 권한 부여
chmod +x helloworld.sh

crontab 를 사용 하기 전에 spring 의 quartz 와 유사 한 방법 을 살 펴 보 겠 습 니 다.
*
*
*
*
*
command
minute
hour
day
month
week
command
나누다
당시
하늘.
월.
요일
command
분: 0 에서 59 사이 의 모든 정수 일 수 있 습 니 다.
hour: 시간 은 0 에서 23 사이 의 모든 정수 일 수 있 습 니 다.
day: 날 짜 를 표시 합 니 다. 1 에서 31 사이 의 모든 정수 일 수 있 습 니 다.
month: 월 은 1 에서 12 사이 의 모든 정수 일 수 있 습 니 다.
week: 무슨 요일 이 든 0 에서 7 사이 의 모든 정수 일 수 있 습 니 다. 여기 서 0 또는 7 은 일요일 을 대표 합 니 다.
command: 실행 할 명령 은 시스템 명령 일 수도 있 고 스 크 립 트 파일 일 수도 있 습 니 다.
특수 문자: 별표 (*): 모든 가능 한 값 을 대표 합 니 다. 예 를 들 어 month 필드 가 별표 라면 다른 필드 의 제약 조건 을 만족 시 킨 후에 매달 이 명령 을 수행 하 는 것 을 의미 합 니 다.
쉼표 (,): 쉼표 로 구 분 된 값 으로 목록 범 위 를 지정 할 수 있 습 니 다. 예 를 들 어 '1, 2, 5, 7, 8, 9' 입 니 다.
중 봉 (-): 정수 간 의 중 봉 으로 하나의 정수 범 위 를 표시 할 수 있다. 예 를 들 어 '2 - 6' 은 '2, 3, 4, 5, 6' 을 나타 낸다.
정사 선 (/): 정사 선 으로 시간의 간격 주파 수 를 지정 할 수 있 습 니 다. 예 를 들 어 '0 - 23/2' 는 두 시간 에 한 번 씩 실행 하 는 것 을 표시 합 니 다.동시에 정사 선 은 별표 와 함께 사용 할 수 있 습 니 다. 예 를 들 어 */10, minute 필드 에 사용 하면 10 분 에 한 번 씩 실행 하 는 것 을 표시 합 니 다.
crontab 범례 5 분 마다 실행/5 * * *
시간 당 0 * * * 실행
매일 0 * * 실행
매주 0 * * 0 실행
매월 0, 1 실행 * *
매년 0, 01, 1 실행 *
다음 명령 을 입력 하 십시오. crontab 를 설정 하여 셸 스 크 립 트 를 정시 에 실행 합 니 다.
crontab -e

알파벳 i 를 입력 하고 삽입 모드 에 들 어가 다음 내용 (1 분 에 한 번 실행) 을 작성 한 다음 종료 저장
*/1 * * * * /root/data/shellfile/helloworld.sh >> /root/data/log/helloworld.log

편집 완료 후 다음 명령 을 사용 하여 Liux 의 모든 중 crontab 정시 작업 을 볼 수 있 습 니 다.
crontab -l

실행 결과:
start execute...2018-01-24 13:53:01
Hello World
execute finish...
 exec jar takes 3 seconds

start execute...2018-01-24 13:54:01
Hello World
execute finish...
 exec jar takes 3 seconds

start execute...2018-01-24 13:55:01
Hello World
execute finish...
 exec jar takes 3 seconds

좋은 웹페이지 즐겨찾기