-
crontab
특정 시간이나 주기별로 실행되는 command를 관리하는 툴
기본 형태
crontab [ -u user ] file crontab [ -u user ] { -l | -r | -e } crontab [ -u user ] [ -i ] { -e | -l | -r } crontab [ -u user ] [ -l | -r | -e ] [ -i ] [ -s ]
-u 옵션으로 crontab을 실행 시킬 유저를 명시할 수 있고 그렇지 않으면 기본 유저로 실행된다.
크론 테이블
* * * * * command_to_execute | | | | | | | | | | | | | | DayOfTheWeek(0-6) (0은 일요일) | | | Month(1-12) | | DayOfMonth(1-31) | Hour(0-23) Min(0-59)
위와 같이 각각 분/시/날/월/요일의 순서로 날짜와 주기를 지정해줄 수 있다.
각 필드에 여러 값 설정하기
- asterisk(*): 모든 값. 필드에 *를 설정하면 매 분, 매 시, 매일 과 같은 의미가 된다.
- comma (,): comma로 여러개의 값을 줄 수도 있다. 분 필드에 1,3,4,6과 같이 값을 주면 1분 3분 4분 6분이라는 뜻이다.
- dash (-): 특정 범위의 값을 나타낸다. 1-3 은 1,2,3과 같다.
- slash (/): 주어진 수만큼의 값을 건너 뛴다. */3을 시간 필드에 명시해두었다면 0시부터 3시간마다 동작한다는 뜻이다.
옵션
crontab -e: 크론잡 생성 및 업데이트
crontab -l: 현재 등록되어있는 크론 작업으 ㅣ리스트
crontab -r: 크론탭 작업 제거
예제
0 12 * * * sample.sh 1>/dev/null 2>&1 매일 12시에 sample.sh 실행 * * * * * sample.sh // 매 분마다 실행 */10 * * * * sample.sh // 매 10분마다 실행 * * * jan,may,aug * sample.sh // 1월,5월,8월에 실행 0 2 * * sun [ $(date +%d) -ge 23 ] && sample.sh // 마지막 주 일요일 2시에 실행 * * * * * sleep 30; sample.sh 30초마다 실행
Reference