Crontab은 스케줄링을 관리하는 프로그램으로써 시스템 관리자에게 매우 중요한 유틸이다.
즉 반복적인 작업을 정의하여 실행해주는 자동 매크로라고 생각하면 된다.
$ crontab -e
# crontab 작성
$ crontab -l
# crontab 작업 리스트 보기
$ crontab -r
# crontab 모든 작업 삭제
# * * * * * command
* * * * * /home/user/test.sh
:위와 같이 먼저. 5개의 실행 주기에 대한 정의를 해준다. 분 시 일 월 요일의 순서이다.
사용 가능한 값은 아래와 같다.
# 매분 test.sh 을 수행
$ * * * * * /home/user/test.sh
# 매일 23시 50분에 수행
$ 50 23 * * * /home/user/test.sh
# 매주 일요일 23시 55분에 수행
$ 55 23 * * 0 /home/user/test.sh
# 매월 1일 10시 10분에 수행
$ 10 10 1 * * /home/user/test.sh
:여러 주기로 수행하는 작업에 대한 예시이다.
# backup crontab
50 23 * * * crontab -l > /home/bak/crontab_bak.txt
: 이렇게 수행하기 편한 만큼, 실수로 모든 작업이 삭제되거나 누군가에 의해 쉽게 수정이 될 수 있다.
이 같은 방법으로 txt파일에 백업을 하는 방법도 있다.
* * * * * /usr/bin/flock -n /tmp/prop.lockfile /home/user/test.sh
:flock -n을 사용하여, Shell Script가 중복 실행되지 않도록 수행할 수 있다.
:test.sh가 1분 이상 수행이 된다면, 중복 실행이 되어 예상치 않은 결과가 나올 수 있다.
쉘 파일에 모든 명령어 및 파일은 절대 경로로 명시해야 한다.
pc의 환경변수를 import할 경우에는, 쉘 파일 첫번째 줄에 -l 을 입력해주면 된다.
#!/bin/bash -l
출처:https://goateedev.tistory.com/100