스크립트에서 스케줄링하기
셸 스크립트의 경우 기존 태스크를 루프로 감싸고 안에서 sleep만 걸어주면 된다. 다른 언어를 사용중이라면 각 언어별로 내장된 sleep 함수를 사용하면 된다.
# original.
task;
# 2 seconds interval.
for i in {1..30}; do
task;
sleep 2;
done
그 다음 crontab에 1분 스케줄링을 걸어준다.
# crontab
* * * * * /bin/sh /path/to/script.sh
sleep 시간을 동적으로 설정하려면 sleep 시간을 받을 수 있도록 할 수도 있다.
n=$1
# n seconds interval.
for i in $(seq $((60/$n))); do
task;
sleep $n;
done
# crontab
* * * * * /bin/sh /path/to/script.sh 2
그런데 만약 task 실행 시간이 충분히 짧지 않다면 실질적인 sleep 시간은 task 실행시간 + sleep 시간이 되기 때문에 스케줄링에 오차가 생길 수 있다. 이 경우는 task를 백그라운드로 실행하면된다.
n=$1
# n seconds interval.
for i in $(seq $((60/$n))); do
task &;
sleep $n;
done
Crontab에서 스케줄링하기
crontab 등록시 스크립트 실행 이전에 sleep을 걸어주면 된다. 단, 첫 스케줄잡은 제외한다. 스크립트를 수정하지 않아도 되기 때문에 가장 편하게 사용할 수 있는 방법이다.
# crontab
* * * * * /bin/sh /path/to/script.sh
* * * * * sleep 10; /bin/sh /path/to/script.sh
* * * * * sleep 20; /bin/sh /path/to/script.sh
* * * * * sleep 30; /bin/sh /path/to/script.sh
* * * * * sleep 40; /bin/sh /path/to/script.sh
* * * * * sleep 50; /bin/sh /path/to/script.sh
1분마다 모두 동시에 실행되지만 sleep이 있어 작업이 지연되므로 10초 간격으로 스케줄링된 것처럼 동작한다
출처 : https://mingrammer.com/scheduling-cron-job-in-seconds-interval/#crontab에서-스케줄링하기
'OS' 카테고리의 다른 글
[리눅스] php 시간대 설정 (0) | 2019.10.15 |
---|---|
[윈도우] 윈도우 2016 업데이트 수동전환 (1) | 2019.10.14 |
[리눅스] crontab 기본 사용법 (0) | 2019.10.11 |
[리눅스] crontab 사이트 호출 (0) | 2019.10.11 |
[리눅스] crontab 재부팅 설정법 (1) | 2019.10.07 |