🕰️ [Ubuntu] 우분투 crontab 배치 등록해보기

서론

환경 : Ubuntu 20.0.4, Macbook M1

시스템 관리에 있어 자동화는 핵심 요소 중 하나

자동화를 통해서 시간이 많이 걸리는 반복 작업을 줄임과 동시에 실수를 방지해서 시스템 안전성을 유지할 수 있다.

이러한 맥락에서 crontab 실습을 기록해보고자 한다.

 

 

crontab 이란?

리눅스 운영체제에서 특정 시간에 명령어나 스크립트를 자동으로 실행시켜 주는 유틸리지, 주기적인 작업 자동화에 사용한다.

 

crontab 설치 & 확인

crontab 설치 방법 및 active 상태 확인하는 방법
# cron 설치하기 
sudo apt install cron
# crontab 상태 확인해보기
sudo service cron status

 

스크린샷 2024-05-30 오후 4.53.04.png
active 상태 확인

 

만약 active 상태가 아닐 경우 다음 명령어를 통해서 active 상태로 변경해 주자

# crontab -> active
sudo service cron start

 

그리고 다음 명령어를 통해서도 crontab이 시작하고 있는지 확인할 수 있다.

# 프로세스 ID가 출력시 -> active 상태, 출력 X이면 실행 X
pgrep cron

스크린샷 2024-05-30 오후 4.58.54.png
프로세스ID - 946 으로 실행 중인 걸 확인할 수 있었다.

crontab 명령어 정리

crontab 명령어를 간단히 알아보자

 

# crontab 편집, 작업할당
crontab -e

# crontab 작업내용 확인
crontab -l

# crontab 시작
sudo service cron start

# crontab 재시작 (설정 변경 후 꼭! 하기)
sudo service cron restart

# crontab 중지
sudo service cron stop

 

설정 변경 후에는 꼭 crontab 재시작하는 것을 잊지 말자! ✅

 

crontab 주기 결정

crontab은 언제 실행할지에 대한 주기를 결정해야 한다.
*      *      *      *      *
분(0-59)  시간(0-23)  일(1-31)  월(1-12)   요일(0-7)

 

주기에 대한 글은 많이 있으니 원하시는 건 알아서 찾아보길!

 

 

crontab 실습해 보기

실습내용 : crontab을 활용하여 쉘 스크립트를 배치작업으로 설정해 보기

간단한 테스트를 위해서 "쉘 스크립트에 1분마다 현재 시각을 test.txt 파일에 기록하기"를 진행해보겠다.

 

1. 쉘 스크립트 작성하기

# vi editor로 .sh 작성하기
vi crontest.sh

# 다음과 같이 파일 내용 기재

#!/bin/bash

# 현재 시간과 날짜 test.txt 파일에 기록하기
echo "현재 시간 : $(date)" >> /home/minho/crontest/test.txt
# 구분선 추가하기
echo "--------------------" >> /home/minho/crontest/test.txt

한 줄에는 하나의 명령만 쓰자! ✅

스크린샷 2024-05-30 오후 5.38.56.png

 

2. 쉘 스크립트 실행 권한 부여하기

보다시피 만든 쉘 스크립트에는 실행권한이 없기 때문에 crontab이 실행할 수 있게 추가해줘야 한다. 

etc-image-3

 

# .sh 파일 실행권한 부여하기
chmod +x ~/crontest/crontest.sh

실행권한이 추가된 것을 확인했다!

etc-image-4

3. crontab 편집하기

crontab -e 명령어를 실행해서 다음 내용을 추가해 주자

* * * * * /home/minho/crontest/crontest.sh

 

그리고 cron 재시작 명령어를 입력해 주자

# crontab 재시작
sudo service cron restart

 

 

4. 확인해 보기

다음과 같이 실제로 test.txt 파일이 생김과 동시에 현재 날짜시간이 기록되고 있다.

etc-image-5

 

마무리

지금은 비록 간단한 crontab이었지만 얼른 취업해서,, 실제로 현업에서는 어떻게 사용하고 있는지 확인해보고 싶고,

적용해 볼 수 있는 기회가 얼른 생겼으면 좋겠다!