What is 'Cron'?
Cron은 정해진 스케쥴에 맞춰 지정된 작업을 수행하도록 설정할 수 있는 Job Scheduler입니다.
흔히 알고 있는 Cron은 'Cronie'라는 패키지로, 그 안에는 Crond(데몬) + Crontab(스케쥴러)가 포함되어 있습니다.
Daemon
Daemon이란, 컴퓨터에서 항상 사용할 수 있도록 백그라운드에서 항상 실행되는 프로세스로서, d로 끝나는 process name을 가집니다.
지금은 이정도만 알아보도록 하고, 추후에 기회가 된다면 더 자세히 알아보고 포스팅해볼 예정입니다.
Cron 설치
Cron패키지(Cronie)의 설치 방법은 다음과 같습니다.
- Debian계열(Ubuntu)
- apt-get install cron
- Fedora계열(CentOS)
- yum install cronie
- MacOS
- brew install cron
Crontab 사용법
Cron 패키지를 설치하고 나면, Crontab으로 Job Schedule을 작성해 프로세스를 실행시킬 수 있습니다.
그 외에도 Schedule을 지우거나, 작성된 Schedule의 리스트를 확인 가능합니다.
간단한 커맨드 몇가지만 알아보도록 하겠습니다.
- Schedule 작성
crontab -e
- 해당 커맨드를 작성하고 나면, text editor를 통해 Crontab Schedule 문법을 맞춰 작성을 할 수 있습니다. 문법은 밑에서 정리하겠습니다.
- Schedule 삭제
crontab -r
- 저장되어있는 스케쥴을 삭제합니다.
- Schedule 확인
crontab -l
- 저장된 스케쥴을 확인합니다.
Crontab 문법
Crontab을 사용해서 work schedule을 생성할 때, 필요한 schedule문법에 대한 정리입니다.
crontab Schedule 문법
Crontab으로 Schedule을 걸어주게되면, POSIX locale을 기준으로 스케쥴을 생성해 지정된 작업을 수행합니다.
crontab에 입력되는 부분은 6개의 field로 구성되어야 하며, 각 field는 ' '(blank)로 구분되어야 합니다.
첫 5개 field에 해당되는 패턴은 다음과 같습니다.
- Minute
- [0,59]
- Hour
- [0,23]
- Day
- [1,31]
- Month
- [1,12]
- Weekday
- [0,6] / 0 = Sunday
해당 field에서의 값을 설정함으로서 원하는 스케쥴에 맞춰 task를 실행시킬 수 있습니다.
- [0,6] / 0 = Sunday
각 field에 값을 넣는 방법은 몇가지가 있습니다.
- 한개의 숫자만을 넣어서 사용하기
- 하나의 값을 넣어 그 값만을 사용하게 됩니다
- 두개의 숫자와 그 사이에 hyphen-minus('-')를 넣어 사용하기
- 두값 사이의 범위를 표현할 수 있습니다
- Asterisk를 사용하기
- 전체 값을 표현할 수 있습니다
6개의 field값 중, 마지막 field는 앞의 5개 field에서 설정한 시간에 맞춰, shell에서 실행되도록 하는 명령어입니다.
해당 field의 값은 '%'기호와 함께 사용할수도 있으며, crontab에서 '%'는 backslash와 같이 사용되며 개행을 의미합니다.
참고로, '#'표시는 crontab에서도 주석으로 인식되어 interpreter에서 인식되지 않습니다
Crontab 사용 예시
# 매주 월요일부터 금요일 오전 3시 15분에 "core"라는 이름을 가진 파일을 초기화 시킵니다.
15 3 * * 1-5 find "$HOME" -name core exec rm -f {} + 2>/dev/null
'TIL' 카테고리의 다른 글
[Pytorch] torch.Tensor.masked_fill (0) | 2024.10.30 |
---|---|
[Pytorch] GPU elapsed time / torch.cuda.Event() (0) | 2024.08.12 |
[Pytorch] torch.Tensor.expand() & torch.Tensor.repeat() (0) | 2024.08.05 |
[Pytorch] Contiguous (0) | 2024.07.31 |
VSCode Debugger /w conda 가상환경 (0) | 2024.07.29 |