OS

[Linux Command Line] Cron 크론

ride-dev 2024. 1. 12. 18:11

Cron 크론

cron은 command가 특정 간격이나 특정 시간에 실행되도록 예약할 때 사용하는 서비스입니다.

이러한 예약작업을 cronjob이라고 하며,

cronjob을 진행하기 위해  crontab 구성 테이블을 편집합니다.

텍스트 편집기나 나노 등을 사용하여 편집할 수 있지만,

crontab -e 명령어를 사용하여 편집하는 것을 권장합니다.

crontab

crontab 명령어는 개별 사용자에 대한 crontab을 유지 관리합니다.

cron daemon과 Vixie Cron을 구동하는 데 사용되는 테이블을 설치 또는 제거하거나 나열하는 데 사용합니다.

각 사용자별 고유한 crontab을 가질 수 있으며, 위치는 /var/spool/cron/crontabs에 있습니다.

crontab -e 를 통해 crontab 구성 테이블을 편집하고 닫으면,

변경된 내용은 그 즉시 적용됩니다.

crontab -e

명령어를 실행하면 먼저 편집에 사용할 편집기를 선택해야 합니다.

처음에 편집기를 선택하면, 다음부터는 자동으로 선택됩니다.

편집기로 내용을 확인해보면, 사용에 대한 예시가 있습니다.

0 5 * * 1

예약시간을 앞에 입력하고,

tar -zcf /var/backups/home.tgz /home/

실행할 명령어를 뒤에 입력합니다.

위의 예시는, tar 명령어를 사용하여 /home/ 디렉토리를 압축하고, /var/backups/home.tgz 에 저장하는 명령어를,

매주 월요일 오전 5시에 실행하도록 예약하는 것입니다.

Cron Syntax 크론 문법

위의 예시에서 살펴봤듯이 cron syntax는 아래와 같은 형식입니다.

a b c d e command

예약 시간에 해당하는 5개의 값을 공백으로 구분하고,

실행할 명령어를 입력합니다.

명령어는 앞서 입력한 값을 기반으로, 일정 간격을 두고 실행됩니다.

예약시간을 입력할 때 기호를 사용하면 예약 시간을 광범위하게설정할 수 있습니다.

*
1,4
1-4
*/5

단계값에 대해 혼동이 있을 수 있습니다.

분에 해당하는 위치에 5를 입력하면, 하루 24시간 중 5분에 해당하는 횟수만큼 반복합니다.

분에 해당하는 위치에 */5를 입력하면, 매 5분마다 1시간에 12번을 반복합니다.

 

아래 사이트에서 더 많은 예시를 확인해볼 수 있습니다.

https://crontab.guru/

 

Crontab.guru - The cron schedule expression editor

 

crontab.guru

~/time.log 파일에,

매분마다,

"Hello Cron, Date is:" 문구와 시간을 기록하도록 할 수 있습니다.

* * * * * echo "Hello Cron, Date is:" $(date)" >> ~/time.log

파일을 저장하고 닫으면,

crontab: installing new crontab 문구가 출력됩니다.

(아무런 편집도 하지 않으면 No modification made 라고 출력됩니다)

매 분마다 명령어가 정상적으로 작동하는 것을 확인할 수 있습니다.

단, 명령어에 오류가 있다면 어떠한 것도 기록되지 않습니다.

(리디렉션이 필요합니다)

표준오류를 리디렉션하면, 아래와 같이 오류가 출력되는 것을 확인할 수 있습니다.

 

Cron을 사용함으로써 시스템 유지보수 및 자동화 작업의 실행을 손쉽게 할 수 있습니다.

(Cron을 통해 정기적으로 백업할 수도 있습니다)

이는 서버 관리 및 안정성을 향상시키고, 반복적인 작업을 효율적으로 처리하는 데 도움이 됩니다.

728x90