1. 일회성 작업 스케줄링

atd 데몬에 의해 처리되며 실행 후 작업이 삭제된다.

at [option] 시간정보

시간정보에는 여러가지 방식으로 입력이 가능하다. 23:00, 11:00 AM, Feb 12 2025 23:00,...
굳이 다 외우고 있지 말고 직관적이고 편한 방법 몇개만 알고있자..

시간 지정 - at 23:50 -> 오후 11시 50분
날짜 지정 - at 071226 -> 26년 7월 12일
현재 시간 기준 - at now + 5min -> 현재시간에서 5분뒤

at을 사용할때는 명령 입력후 프롬프트에 지정한 시간에 실행할 명령을 입력하고 Ctrl + D를 눌러 종료하면 된다.

사용자가 at명령으로 등록한 작업은 atq 명령으로 확인할 수 있다.

atq

2. 정기적 작업 스케줄링

crond 데몬에 의해 처리되며 주기적으로 실행할 때 이용한다.
crond는 crontab 명령을 통해 작업 등록,확인,삭제를 진행할 수 있다.

사용자가 예약한 작업은 /var/spool/cron 경로에 사용자 이름으로 생성된 파일에 저장된다.

ls -l /var/spool/cron/

crontab을 사용하기에 앞서 작업 등록시 지정된 형식에 따라 예약 작업을 작성해야 되는데 총 6개의 필드로 구성되어 있으며 각 필드는 공백으로 구분한다. 각 필드는 숫자 이외에 메타문자를 넣어도 된다.

분 시 일 월 요일 명령어

  • 분: 0~59
  • 시: 0~23
  • 일: 0~31
  • 월: 1~12
  • 요일: 0~7(0,7은 일요일 1은 월요일)
  • 명령어: 실행할 명령어나 스크립트 파일 경로

crontab을 사용할 땐 crontab -e 명령어를 이용한다.
해당 명령어 실행 시 /tmp 하위에 crontab.[임의문자열] 형태의 임시파일이 생성되고 해당 파일을 편집할 수 있는 vi가 자동으로 실행된다. 앞서 설명한 형식에 맞춰 작업 예약을 진행하면 된다.

매일 9시에 pwd 명령 실행 예약 예시

crontab -e말고도 해당 형식으로 파일을 미리 생성하고 해당 파일을 지정해 작업을 예약할 수도 있다.
해당 형식으로 파일 작성 후 crontab 뒤에 파일 경로를 붙여주자.

crontab [fileName]

작업을 예약하고 어떤작업이 예약되어 있나 확인하기 위해선 -l옵션을 이용한다

crontab -l

작업을 제거할 땐 crontab -e에서 직접 삭제해도 되고 전체 삭제시에는 -r 옵션을 이용해도 된다.

crontab -r

지금까지 설명한 crontab은 사용자 cron이다. 시스템 cron에 대해 알아보기에 앞서 cron에 대해 간략하게 알아보자
리눅스에서 주기적으로 예약 작업 수행을 위한 도구에는 cron과 anacron이 있다.
두 도구사이에 여러 차이가 있지만 간단하게 생각하자 anacron은 cron의 개량버전이다.

사용자 cron은 앞서 설명한 것 처럼 crontab으로 지정한다. 그럼 시스템 cron은 어떻게 할까?
/etc/crontab 파일을 편집하거나 /etc/cron.d 디렉토리에 파일을 생성하여 작업을 예약한다. /etc/crontab 파일은 템플릿으로 두고 /etc/cron.d 하위에 직접 파일을 생성하여 쓰자.

vi /etc/crontab

ls /etc/cron.d

cat /etc/cron.d/0hourly

매 시간마다 root 사용자가 run-parts /etc/cron.hourly 를 실행한다.
실행 시 사용자 필드의 사용자 권한으로 명령을 실행한다. 현재 root 사용자가 지정되어 있으므로 root 권한으로 명령이 실행될 것이다.
run-parts 명령은 디렉토리 내 모든 실행 파일을 실행한다. 해당 디렉토리 내부에는 스크립트가 존재한다.

※ 참고자료
엔터프라이즈 리눅스 핵심 운영 가이드 vol.1

0개의 댓글