crontab -e 로 반복 작업 생성하기
이 단계에서는 cron을 사용하여 반복 작업을 예약하는 방법을 배웁니다. 작업을 한 번만 실행하는 at과 달리, cron은 일정에 따라 작업을 반복적으로 실행하도록 설계되었습니다. 예약된 작업은 crontab이라는 특수 파일에서 관리합니다.
사용자의 crontab 파일을 편집하려면 crontab -e 명령어를 사용합니다. 여기서 -e는 "edit(편집)"을 의미합니다.
편집을 위해 crontab 파일을 열어보겠습니다.
crontab -e
crontab -e를 처음 실행하는 경우 기본 텍스트 편집기를 선택하라는 메시지가 표시될 수 있습니다. 사용하기 쉬운 nano를 권장합니다.
Select an editor. To change later, run 'select-editor'.
1. /bin/nano <---- 가장 쉬움
2. /usr/bin/vim.basic
...
Choose 1-2 [1]:
1을 입력하고 Enter를 눌러 nano를 선택합니다. crontab 파일이 열립니다. 사용법을 설명하는 몇 가지 주석을 제외하고는 대부분 비어 있을 것입니다.
crontab 항목은 6 개의 필드로 구성된 특정 형식을 가집니다.
분 시 일 월 요일 명령어
시간 필드에 별표 (*) 를 사용하면 와일드카드로 작동하여 "매 (every)"를 의미합니다. 이번 실습에서는 매분마다 명령어를 실행하려고 합니다. 이는 결과를 확인하기 위해 오래 기다릴 필요가 없으므로 테스트하기에 완벽합니다. "매분"에 대한 일정 설정은 * * * * *입니다.
이제 파일 끝에 새 줄을 추가하여 현재 날짜와 시간을 프로젝트 디렉토리의 cron_log.txt라는 로그 파일에 추가하는 작업을 예약합니다.
* * * * * date >> ~/project/cron_log.txt
줄을 추가한 후 편집기 화면은 다음과 같아야 합니다.
## Edit this file to introduce tasks to be run by cron.
#
## Each task to run has to be defined through a single line
## indicating with different fields when the task will be run
## and what command to run for the task
#
## To define the time you can provide concrete values for
## minute (m), hour (h), day of month (dom), month (mon),
## and day of week (dow) or use '*' in these fields (for 'any').
#
## Notice that tasks will be started based on the cron's system
## daemon's notion of time and timezones.
#
## Output of the crontab jobs (including errors) is sent through
## email to the user the crontab file belongs to (unless redirected).
#
## For example, you can run a backup of all your user accounts
## at 5 a.m. every week with:
## 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
#
## For more information see the manual pages of crontab(5) and cron(8)
#
## m h dom mon dow command
* * * * * date >> ~/project/cron_log.txt
파일을 저장하고 nano를 종료하려면 Ctrl-X를 누르고, 변경 사항을 확인하기 위해 Y를 누른 다음, 마지막으로 Enter를 눌러 파일에 기록합니다.
종료하면 터미널에 확인 메시지가 표시됩니다.
crontab: installing new crontab
이는 새로운 cron 작업이 활성화되었음을 의미합니다. 이제 cron 데몬은 매분 이 파일을 확인하고 명령어를 실행합니다.
최소 1 분 동안 기다립니다. 그런 다음 로그 파일이 생성되었는지 확인합니다.
ls -l ~/project/cron_log.txt
목록에 파일이 표시되어야 합니다.
-rw-r--r-- 1 labex labex 29 Jan 1 12:15 /home/labex/project/cron_log.txt
이제 내용을 확인해 봅니다.
cat ~/project/cron_log.txt
출력 결과에는 명령어가 처음 실행된 날짜와 시간이 표시됩니다.
Mon Jan 1 12:15:01 UTC 2024
1 분을 더 기다린 후 cat 명령어를 다시 실행하면 업데이트된 타임스탬프와 함께 새 줄이 추가된 것을 볼 수 있으며, 이는 작업이 반복적으로 실행되고 있음을 증명합니다.