cron
은 UNIX 계열 운영체제에서 주기적으로 작업을 실행할 수 있게 해주는 데몬 프로그램임.
- 주기적으로 실행할 명령어와 스크립트를 설정할 수 있음.
- 주기적으로 수행할 예약 작업을 설정하여 실행케 해줌.
cron
은 crontab
에 기재된 실행할 작업 스케쥴을 수행한다.
- crontab은 cron 데몬이 읽고 실행할 작업 스케쥴을 정의한 파일과
- 해당 파일을 관리하는 명령어를 가르킴.
가장 대표적인 crontab 파일이 바로
/etc/crontab
파일로서 관리자만이 편집가능함.
해당 파일을 직접 수정하는 것으로cron
이 수행할 작업을 지정할 수 있으나,
일반적으로는crontab -e
를 통해 수행함.
아래는 crontab
의 사용법을 정리한 내용임.
1. crontab 파일 열기
crontab
명령어를 사용하여 현재 사용자의 crontab
파일을 편집 할 수 있음.
crontab -e
- 이는
/etc/crontab
에도 반영이 됨: 해당 사용자 id도 같이 기재됨.
참고
- Environment variables에
EDITOR
를 설정하지 않은 경우엔 어떤 에디터를 쓸지를 물어본다. - vi를 권하나, 초보자라면 nano를 사용할 것.
https://dsaint31.tistory.com/444
https://dsaint31.tistory.com/473
2. crontab 파일 형식
crontab
파일에는 다음과 같은 형식으로
- 주기와
- 명령어를 지정함.
* * * * * 명령어
각각의 필드 *
는 다음을 의미함:
- 첫 번째 필드: 분 (0 - 59),
m
(minute) - 두 번째 필드: 시간 (0 - 23),
h
(hour) - 세 번째 필드: 일 (1 - 31),
dom
(day of month) - 네 번째 필드: 월 (1 - 12),
mon
(month) - 다섯 번째 필드: 요일 (0 - 7) (0과 7 은 일요일을 의미함),
dow
(day of week)
참고로 /etc/crontab 에 직접 기재하는 경우,
명령어 앞에 사용자 column이 존재함.
예를 들어, 매일 오후 2시 30분에 실행되는 명령어를 설정하려면 다음과 같이 작성함:
30 14 * * * /path/to/command
3. 특수 문자
각 필드에서 사용가능한 특수 문자는 다음과 같음.
*
: 모든 값을 의미함,
: 여러 값을 구분함 (예:1,2,3
은 1, 2, 3일에 실행됨)-
: 범위를 지정함 (예:1-5
는 1일부터 5일까지 실행됨)/
: 간격을 지정함 (예:*/2
는 2분마다 실행됨)
예를 들어, 매 시간 0분과 30분에 실행되는 명령어를 설정하려면 다음과 같이 작성함:
0,30 * * * * /path/to/command
4. Examples
다음 예에서 명령어들은 해당 경로로 직접 작성한 shell을 의미한다.
- 매일 오전 6시에 백업 스크립트를 실행함:
0 6 * * * /path/to/backup.sh
- 매주 월요일 오전 7시 정각에 로그 정리를 실행함:
0 7 * * 1 /path/to/log_cleanup.sh
- 매월 1일 자정에 데이터베이스 백업을 실행함:
0 0 1 * * /path/to/db_backup.sh
5. crontab 확인 및 삭제
현재 사용자의 crontab
파일을 확인하려면 다음 명령어를 사용함:
crontab -l
현재 사용자의 crontab
파일을 삭제하려면 다음 명령어를 사용함:
crontab -r
6. 로그 확인
cron
작업이 정상적으로 실행되었는지 확인하려면 시스템 로그 파일을 확인 해야 함.
일반적으로
/var/log/cron
또는/var/log/syslog
파일에 기록됨.
7. 환경 변수
crontab에서 사용할 환경 변수를 설정할 수 있음.
예를 들어, PATH
를 설정하려면 crontab 파일의 맨 위에 다음과 같이 추가함:
PATH=/usr/local/bin:/usr/bin:/bin
2023.06.20 - [개발환경] - [Env] Environment Variable (환경변수)
2024.01.29 - [Linux] - [zsh] 환경변수 사용하기: Referencing Environment Variable
'Linux' 카테고리의 다른 글
[linux] find 사용법. (0) | 2024.05.11 |
---|---|
[linux] example: sed: -r or -E (0) | 2024.05.11 |
[linux] example: sed: -f option (0) | 2024.05.11 |
[linux] example: sed: -e option (0) | 2024.05.11 |
[linux] example: sed: -n option (0) | 2024.05.11 |