[Linux] Cron이란?

Austin·2024년 12월 5일

Linux

목록 보기
10/10

Cron이란?

Cron은 유닉스 계열의 컴퓨터 운영체제에서 사용되는 시간 기반 작업 스케줄러이다.
사용자가 지정한 시간에 자동으로 명령이나 스크립트를 실행할 수 있도록 해준다.
반복작업을 효율적으로 자동화하는데 사용된다.

특징

  • 시간 기반 실행
    cron은 특정 시간, 날짜, 간격으로 작업을 실행할 수 있다.
  • 자동화
    시스템 유지보수, 데이터 백업, 주기적인 보고서 생성 등 다양한 반복 작업을 자동화할 수 있다.
  • 유연한 스케줄링
    분, 시간, 일, 월, 요일 단위로 세밀한 스케줄 설정이 가능하다.

crontab

cron 작업은 crontab(cron table) 파일에 의해 관리된다.
각 사용자는 자신의 crontab 파일을 가질 수 있으며, 시스템 전체에 영향을 미치는 crontab 파일도 존재한다.

crontab 형식

* * * * * command to execute
│ │ │ │ │
│ │ │ │ └─ 요일 (0 - 7) (0 또는 7은 일요일)
│ │ │ └─── 월 (1 - 12)
│ │ └───── 일 (1 - 31)
│ └─────── 시 (0 - 23)
└───────── 분 (0 - 59)

사용 예시

  • 매일 자정에 백업 스크립트 실행
0 0 * * * /path/to/backup.sh
  • 매주 월요일 오전 9시에 보고서 생성
0 9 * * 1 /path/to/report.sh

시스템 crontab 수정

전체 터미널에서 cron 작업을 실행하려면 시스템의 crontab 파일을 수정해야 한다.
모든 사용자에 대해 공통적으로 실행되는 작업을 설정할 수 있다.
root 권한이 필요하며 아래 경로에 있는 crontab을 수정하면 된다.

sudo nano /etc/crontab

Cron 설치 방법

Debian/Ubuntu 계열 (APT 사용)

아래 코드를 보면 설치, 관리 할 수 있다.

sudo apt install cron
// apt 패키지 관리자로 cron 패키지 설치
sudo systemctl start cron
// systemctl 명령어와 start 옵션으로 cron은 지금 세션에서 바로 시작
sudo systemctl enable cron
// enable 옵션은 서버 시작 시 자동 시작 옵션으로 다음 부팅부터 자동으로 cron 활성화
sudo systemctl status cron
// cron의 현재 상태 확인
crontab -l
// 현재 사용자 cron의 작업 확인

wall 명령어

wall 명령어는 Unix 및 Linux 시스템에서 사용되는 유틸리티로, 시스템에 로그인한 모든 사용자의 터미널에 메시지를 전송하는 데 사용된다.
"wall"은 "write to all"의 약자이다.

특징

  • 전체 사용자 대상
    현재 시스템에 로그인한 모든 사용자의 터미널에 메시지를 표시한다.
    (wall명령어를 사용하는 계정이 로그인 되어 있어야 함)
  • root 권한
    기본적으로 root 사용자나 sudo 권한이 있는 사용자만 wall 명령어를 사용할 수 있다.
  • 즉시 전송
    메시지는 즉시 모든 대상 터미널에 표시된다.
  • 브로드캐스트 메시지
    시스템 유지보수, 긴급 공지 등을 알리는 데 유용하다.

cron + wall 예시

모니터링 스크립트 monitoring.sh를 10분 간격으로 모든 터미널에 보내는 상황을 가정할 때다.

crontab -e
*/10 * * * * ~/monitoring.sh | wall

cron작업을 설정하여 10분마다 monitoring.sh스크립트를 실행한다.
그 결과를 wall명령어를 통해 로그인 되어 있는 모든 사용자의 터미널에 메시지로 보내는 설정이다.

0개의 댓글