[Linux] Task Scheduling

조성열·2025년 9월 25일

Toss - Linux

목록 보기
4/15
post-thumbnail

특정 시간에 해야하는 작업 또는 백업과 같이 주기적으로 해야하는 작업을 직접하는건 효율성이 떨어지기 때문에 시스템 예약을 통해 진행할 수 있다.


단일성 작업

리눅스에서 1회성 작업 등록은 at명령을 사용한다.

at [option] time-spec

at명령을 통해 5분 뒤 /root/pslist에 대해 ps 명령이 수행 될 수 있게 예약했다. 예약 확인은 atq명령을 입력하면 된다.
이런 단일 작업은 /var/spool/at 디렉토리에 파일 형태로 저장되어 있다가 실행한 후 삭제된다.

주기적 작업

주기적으로 수행할 작업을 등록할 때는 crontab명령을 사용한다. 작업이 등록되면 이는 crond 데몬에 의해 실행된다. 현재 예약한 작업이 없어 뜨진 않지만 해당 디렉토리에 예약한 작업이 각 사용자 이름으로 저장된다. 실행은 /etc/crontab, /etc/anacrontab, /etc/cron.d아래 파일에서 등록된 예약 작업들을 수행한다.
crontab -e를 입력하면 /tmpcrontab.임의문자열 형식으로 파일이 생성되고, vi 편집기가 열린다.
이후 특정 문법에 맞춰 예약을 진행한다.

분 시 일 월 요일 명령어

시간은 24시간제로 입력하고 요일은 0 ~ 6까지 일 ~ 토에 해당한다. 매주, 매월, 매일을 원할 때는 해당 필드에 *을 입력 해주면 된다. 예약한 작업을 삭제할 때는 crontab -r옵션을 주면 삭제된다.
만약 시스템 셧다운이 된다면 cron은 작동하지 않는다. 이렇게 되면 cron으로 예약한 작업이 누락되므로 이를 방지하기 위해 ancron을 사용한다.
ancron은 cron으로 예약한 작업이 시스템 오류 같은 사유로 작업이 누락됐을 때 재부팅 시 해당 작업을 수행한다.

시스템 작업 예약

crontab은 시스템 cron 파일이다. 해당 파일에 작업 등록이 가능하지만 템플릿으로 사용하는게 좋다.
위 파일을 /etc/cron.d에 복사하여 사용하면 된다.
사용자 작업과 비슷하지만 사용자 필드가 추가적으로 있고, 시스템 cron이 작업을 수행할 때 해당 필드의 사용자 권한으로 실행한다. 사용자가 모두 시스템 작업을 예약하는게 아니라 특정 소프트웨어 설치시 해당 프로그램에서 자동으로 cron에 등록하기도 하는데, 대표적으로 리눅스 설치시 자동 설정되는 0hourly가 있다. 해당 파일은 '분' 필드만 1이기 때문에 매 시간 실행된다. anacrontab 파일 내용이다. cron.daily, cron.weekly, cron.monthly로 구성되어 있는데 각각 매일, 매주, 매월 실행되는 시스템 작업들이 저장되어 있다.
위 템플릿에 맞춰 작업 수행 간격, 작업-작업 사이 간격, 작업 이름, 명령을 입력하여 시스템 예약을 하게 된다.

profile
Blue Team

0개의 댓글