Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 자바암호
- Database
- 자바네트워크
- 시스템
- oracle
- 뉴턴역학
- NIO
- Java
- write by chatGPT
- JVM
- android
- 인프라
- 코틀린
- flet
- 파이썬
- 리눅스
- 고전역학
- 역학
- python
- kotlin
- 웹 크롤링
- 자바
- lombok
- chatGPT's answer
- Spring boot
- GPT-4's answer
- 유닉스
- 소프트웨어공학
- GIT
- write by GPT-4
Archives
- Today
- Total
Akashic Records
'crontab' 스케줄링을 위한 가이드 본문
728x90
cron
은 유닉스 및 유닉스 계열 시스템에서 시간 기반의 작업 스케줄링을 위해 사용되는 프로그램입니다. 사용자는 cron
을 사용하여 반복적인 작업을 자동으로 실행할 수 있도록 예약할 수 있습니다. 다음은 cron
프로그램을 사용하기 위한 기본 가이드입니다.
Cron 작업 설정하기
- Crontab 파일 열기:
crontab -e
명령을 사용하여 현재 사용자의crontab
파일을 편집합니다. 이 파일에는 사용자가 스케줄링한 모든 작업(cron jobs)이 포함됩니다.
- Cron 작업 형식:
crontab
파일 내의 각 라인은 하나의 작업을 정의합니다. 작업은 다음 형식을 따릅니다:
여기서, 각* * * * * command_to_execute
*
는 다음을 나타냅니다:- 첫 번째
*
: 분 (0 - 59) - 두 번째
*
: 시 (0 - 23) - 세 번째
*
: 일 (1 - 31) - 네 번째
*
: 월 (1 - 12) - 다섯 번째
*
: 요일 (0 - 7, 여기서 0과 7은 일요일을 나타냄)
- 첫 번째
- Cron 작업 예시:
- 매일 자정에 "hello world"를 출력하는 작업:
0 0 * * * echo "hello world" >> /tmp/hello.log
- 매주 월요일 오전 8시에 백업 스크립트 실행:
0 8 * * 1 /path/to/backup_script.sh
- 매일 자정에 "hello world"를 출력하는 작업:
- Crontab 파일 저장 및 종료:
- 작업을 추가한 후, 파일을 저장하고 에디터를 종료합니다.
crontab
은 자동으로 새로운 작업을 스케줄링합니다.
- 작업을 추가한 후, 파일을 저장하고 에디터를 종료합니다.
- Crontab 작업 확인:
crontab -l
명령을 사용하여 현재 사용자의 모든 스케줄링된 작업을 확인할 수 있습니다.
추가 팁
- 특수 문자 사용:
@hourly
,@daily
,@weekly
,@monthly
,@yearly
(또는@annually
)를 사용하여 간편하게 작업을 스케줄링할 수 있습니다. 예를 들어, 매일 자정에 실행되는 작업은@daily
로 표현할 수 있습니다.
- 경로 설정:
cron
작업이 실행될 때, 기본 쉘 환경과 다를 수 있기 때문에, 스크립트나 명령어에서 사용되는 프로그램의 전체 경로를 명시하는 것이 좋습니다.
- 출력 및 오류 로깅:
cron
작업의 출력이나 오류를 파일로 리다이렉션하여 로깅할 수 있습니다. 예:command > /path/to/logfile 2>&1
cron
을 사용하면 시스템 관리 작업, 정기적인 백업, 주기적인 데이터 처리 등을 자동화할 수 있어 매우 유용합니다. 작업 스케줄링에 있어 cron
의 유연성과 신뢰성은 시간 기반 작업을 효율적으로 관리할 수 있게 해 줍니다.
예시: 날짜별 로그 파일 생성하기
다음은 매일 자정에 특정 스크립트를 실행하고, 그 결과를 "YYYY-MM-DD.log"
형식의 파일 이름으로 저장하는 cron 작업의 예시입니다.
0 0 * * * /path/to/your_script.sh > /path/to/log/$(date +\%Y-\%m-\%d).log 2>&1
여기서 중요한 부분은 date +\%Y-\%m-\%d
입니다. 이 부분은 실행되는 날짜를 YYYY-MM-DD
형식으로 변환합니다. cron 작업에서는 %
문자가 특별한 의미를 가지므로, 이를 리터럴 문자로 사용하려면 \
로 이스케이프해야 합니다(\%Y
).
\%Y
: 년도를 4자리 숫자로 표시합니다 (예: 2024).\%m
: 월을 2자리 숫자로 표시합니다 (예: 01).\%d
: 일을 2자리 숫자로 표시합니다 (예: 23).
이 방식을 사용하면 매일 다른 이름의 로그 파일이 생성되어, 각 날짜에 실행된 작업의 로그를 쉽게 구분할 수 있습니다.
추가 팁
- 로그 파일 관리: 날짜별로 로그 파일이 생성되면 파일 수가 많아질 수 있습니다. 이 경우,
logrotate
와 같은 도구를 사용하여 로그 파일을 자동으로 관리하거나, 오래된 로그 파일을 정기적으로 삭제하는 스크립트를cron
에 스케줄링할 수 있습니다. - 로그 파일 포맷: 필요에 따라 날짜 포맷을 변경할 수 있습니다. 예를 들어, 시간까지 포함하고 싶다면
date +\%Y-\%m-\%d-\%H-\%M-\%S
와 같이 할 수 있습니다.
이 방법을 통해 cron 작업의 로그를 날짜별로 구분하여 남기고, 시스템의 이벤트와 작업 실행 결과를 보다 체계적으로 관리할 수 있습니다.
728x90
'Operation System Controls' 카테고리의 다른 글
Linux 프로그램, 프로세스 관리 (0) | 2024.03.19 |
---|---|
Linux 파일을 다루는 명령어들 (1) | 2024.03.18 |
현재 실행 중인 프로세스와 시스템 상태를 보여주는 'top' (1) | 2024.03.15 |
vmstat (0) | 2018.04.18 |
Unix 프로세스 관리(PS) (0) | 2018.04.18 |
Comments