소개
cron은 반복 작업 (매일, 매시간 등) 에 적합하지만, 미래의 특정 시각에 작업을 한 번만 실행해야 할 때도 있습니다. 예를 들어 오늘 밤 오전 2 시에 서비스를 다시 시작하거나, 30 분 후에 데이터베이스 스냅샷을 생성할 수 있습니다.
Linux 에서는 이러한 일회성 작업에 at 유틸리티를 사용합니다.
at 명령은 표준 입력 또는 파일에서 명령을 읽은 다음, 나중에 해당 명령을 실행합니다. 작업이 반복되지 않고 한 번만 지연 실행되어야 할 때 유용합니다. 반복 일정 모델을 사용하는 cron과는 용도가 다릅니다.
두 도구의 핵심적인 차이는 간단합니다. cron은 반복 일정을 정의하고, at은 미래의 특정 시각에 한 번 실행할 작업을 대기열에 등록합니다. 둘 다 자동화 도구이지만 서로 다른 시간 예약 문제를 해결합니다.
이 실습에서는 다음 작업을 수행합니다.
- 필수 구성 요소 설치:
at유틸리티를 설치하고 데몬이 실행 중인지 확인합니다. - 작업 예약:
at을 사용해 나중에 실행할 명령을 대기열에 등록합니다. - 대기열 확인:
atq를 사용해 대기 중인 작업을 목록으로 확인합니다. - 작업 관리:
atrm을 사용해 대기열에서 작업을 삭제합니다.
at 유틸리티 설치
모든 Linux 배포판에서 at 명령이 기본으로 설치되어 있는 것은 아닙니다. 먼저 at이 설치되어 있고 백그라운드 서비스가 실행 중인지 확인해야 합니다.
cron과 마찬가지로 at도 데몬에 의존합니다. 입력한 명령은 대기열에 등록할 작업 정의를 만들고, 백그라운드 서비스가 나중에 해당 작업을 실제로 실행합니다.
- 패키지를 설치합니다.
sudo apt-get install -y at
at시스템은 예약된 명령을 실행하기 위해atd라는 백그라운드 데몬을 사용합니다. 서비스를 시작합니다.
sudo service atd start
- 서비스가 활성 상태인지 확인합니다.
sudo service atd status
출력에 atd가 실행 중임을 나타내는 내용이 표시되어야 합니다.
작업 예약
이제 시스템이 준비되었으므로, 5 분 후에 파일을 생성하는 간단한 작업을 예약해 at이 정상적으로 작동하는지 확인합니다.
먼저 at 명령 뒤에 원하는 시간을 지정해 실행합니다.
at now + 5 minutes
프롬프트가 at>으로 바뀌면 입력을 기다리는 상태입니다. 실행할 명령을 입력합니다.
이 인터페이스는 at이 미래에 실행할 작업의 명령 내용을 대화형으로 입력받는다는 점에서 cron과 다릅니다. 일회성 작업의 본문을 작성한 후 대기열에 제출한다고 생각하면 됩니다.
echo "Hello LabEx" > /home/labex/project/hello.txt
저장하고 종료하기:
- Ctrl + D를 누릅니다.
<EOT>(End of Transmission) 와 job 1 at ...과 같은 확인 메시지가 표시되어야 합니다.
이 메시지는 작업이 대기열에 제출되었음을 의미합니다.
대기 중인 작업 목록 확인 (atq)
작업을 예약한 후에는 작업이 대기열에 등록되었는지 확인하거나 작업 ID 를 확인할 수 있습니다.
대기열을 목록으로 표시하는 명령은 atq입니다.
atq
출력 형식은 일반적으로 다음과 같습니다. 1 Mon Oct 23 10:05:00 2023 a labex
출력 항목 설명:
- 1: 작업 ID 입니다. 작업을 삭제할 때 이 번호가 필요합니다.
- 날짜/시간: 작업이 실행되도록 예약된 시각입니다.
- 사용자: 작업을 소유한 사용자입니다.
예약된 작업은 제출한 후 쉽게 잊을 수 있으므로 대기열을 확인하는 것이 중요합니다. atq를 사용하면 작업이 실행되기 전에 대기 중인 작업을 확인할 수 있습니다.
대기열이 비어 있다면 작업이 이미 실행되었거나 제출에 실패했을 수 있습니다.
작업 취소 (atrm)
생각이 바뀌었거나 잘못 입력한 것을 발견했다면 작업이 실행되기 전에 대기열에서 삭제할 수 있습니다.
atrm 명령 뒤에 작업 ID 를 지정해 실행합니다.
먼저 atq로 작업 ID 를 확인합니다. 앞 단계에서 생성한 작업의 ID 는 1일 가능성이 높습니다. 그런 다음 다음 명령을 실행합니다.
atrm 1
이제 대기열이 비어 있는지 확인합니다.
atq
출력이 아무것도 표시되지 않아야 하며, 이는 작업이 취소되었음을 의미합니다. 파일도 생성되지 않습니다.
이 취소 과정에서는 대기열에 등록된 작업이 단순히 실행 후 잊어버리는 명령이 아니라 관리할 수 있는 객체라는 점을 확인할 수 있습니다. 작업을 확인하고 ID 로 식별한 다음, 계획이 바뀌면 실행 전에 삭제할 수 있습니다.
요약
이 실습에서는 일회성 작업을 관리하는 방법을 배웠습니다.
- 설치:
at과atd를 설정합니다. - 예약 (
at):at now + 5 minutes와 같은 구문으로 나중에 실행할 명령을 대기열에 등록합니다. - 목록 확인 (
atq): 대기열을 확인해 대기 중인 작업 ID 와 실행 시각을 확인합니다. - 삭제 (
atrm): 작업 ID 를 사용해 대기열에서 특정 작업을 삭제합니다.
반복 일정에는 cron을 사용하고, 한 번만 지연 실행하는 작업에는 at을 사용합니다.



