Examples

 # crontab 파일을 편집할 수 있도록 열어준다
crontab -e

 # cron 작업 목록을 확인한다
crontab -l

Syntax

분 시 일 월 요일 명령어 형식을 사용한다.

 # 1분마다 ~/script.sh 를 실행한다
* * * * * ~/script.sh

 # 5분마다 ~/script.sh 를 실행한다
*/5 * * * * ~/script.sh

 # 매 시간 5분이 될 때마다(1시간마다) ~/script.sh 를 실행한다
5 * * * * ~/script.sh

 # 매일 오전 9시 30분에 ~/script.sh 를 실행한다
30 9 * * * ~/script.sh

 # 월,화,수,목,금 오전 9시 30분에 ~/script.sh 를 실행한다
30 9 * * 1-5 ~/script.sh

 # 이틀에 한번씩 밤 9시 30분에 ~/script.sh 를 실행한다
30 21 */2 * * ~/script.sh

 # 매달 1일 오전 9시 30분에 ~/script.sh 를 실행한다
30 9 1 * * ~/script.sh

 # 매년 8월 15일 오전 9시 30분에 ~/script.sh 를 실행한다
30 9 15 8 * ~/script.sh

 # 두 달에 한번씩 1일 오전 9시 30분에 ~/script.sh 를 실행한다
30 9 1 */2 * ~/script.sh

 # 월,수,금,일 오전 9시 30분에 ~/script.sh 를 실행한다
30 9 * * 1,3,5,7 ~/script.sh

추천하는 사이트

문제 해결

.bash_profile 실행이 필요한 경우

.bash_profile, PATH 등을 사용 환경과 일치시키려면 다음 방법을 사용할 수 있다.

* * * * * bash -c 'source ~/.bash_profile && ~/script.sh'

하지만 위의 방법이 썩 마음에 들지 않는다면 SHELLPATH를 지정하도록 한다.

SHELL=/bin/bash
PATH=/opt/homebrew/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
* * * * * ~/script.sh
  • SHELL/bin/bash로 지정하기 때문에 ~/.bash_profile을 알아서 source한다.

mail을 끄고 싶은 경우

crontab은 실행될 때마다 /var/mail로 메일을 보내는데, 가벼운 작업이라면 성가시다.

[[/cmd/chronic]]{chronic}과 명령을 조합하면 실패했을 경우에만 출력이 되므로, 명령이 실패한 경우에만 메일이 발송되도록 할 수 있다.

다음과 같이 실행하려는 명령 앞에 [[/cmd/chronic]]{chronic}을 붙여주면 된다.

* * * * * chronic ~/script.sh