리눅스 정보실
리눅스 at 명령어로 예약 작업 관리하기 실무 가이드
고지존
2025. 8. 12. 17:12
반응형
리눅스에서 단발성(한 번만 실행) 예약 작업을 처리할 때 가장 간단한 도구가 at
명령어와 atd
데몬입니다. 이 글에서는 설치부터 기본 사용법, 관리, 환경 변수 주의사항, 그리고 실무에서 바로 쓸 수 있는 예제까지 자세히 설명합니다.
1. at / atd 개요
at
는 특정 시간에 단 한번 명령을 실행하는 예약 도구입니다. 반복 예약은 cron
이나 systemd timer
가 더 적합합니다. at
명령어로 명령을 예약하면, atd
가 해당 시간에 실행해 줍니다.
2. 설치 및 서비스 확인
# 설치 (배포판별 명령어)
sudo yum install -y at # Rocky, CentOS 등 RHEL 계열
sudo apt-get install -y at # Debian, Ubuntu 등
# 서비스 시작 및 활성화
sudo systemctl enable --now atd
sudo systemctl status atd
3. 기본 사용법
1분 뒤에 명령 실행 예약 (파이프로 입력)
echo "echo hello >> /tmp/at-test.log" | at now + 1 minute
대화형 예약 (명령 직접 입력, Ctrl+D로 종료)
at 14:30
at> /usr/local/bin/backup.sh
at> <Ctrl-D>
4. 자주 쓰는 시간 표현
now + 2 hours
now + 1 day
noon
,midnight
,teatime
09:00 2025-08-15
(특정 날짜+시간)
5. 예약 작업 목록과 삭제
예약 목록 확인
atq
작업 삭제 (번호 N)
atrm N
atq
출력의 첫 번째 열이 작업 번호입니다.
6. 환경 변수 및 PATH 주의
at
작업은 비로그인 셸 환경에서 실행되어 환경 변수가 다를 수 있습니다.
- 절대 경로 사용 권장 (예:
/usr/bin/python3
) - 명령어 앞에 PATH 명시적으로 지정
echo "PATH=/usr/local/bin:/usr/bin; /usr/local/bin/myjob" | at 02:00
- 로그인 셸처럼 실행하려면
bash -lc
사용
echo "bash -lc '/home/user/script.sh arg1 arg2'" | at 03:00
7. 스크립트 파일 입력과 이메일 알림
여러 줄 스크립트 파일 예약
at -f /home/user/job.sh 22:00
파이프로도 가능
cat <<'EOF' | at 05:00
#!/bin/bash
date >> /tmp/job.log
/usr/bin/rsync -az /data /backup
EOF
예약 작업 실행 결과는 시스템 메일로 전송될 수 있습니다(메일 설정 시).
8. 실전 예제: 월말 특정일 단발 작업
day=$(date -d "last day of this month" +%Y-%m-%d)
echo "/usr/local/bin/monthly-dump.sh" | at 02:00 $day
9. 문제 해결 팁
- atd 서비스 실행 확인
- /etc/at.allow 또는 /etc/at.deny로 예약 권한 제한 확인
- 실행 실패 시 로그 확인 (
/var/log/cron
,/var/log/messages
,journalctl
) - 명령어 경로 문제 시 절대 경로로 지정하거나 스크립트 내 PATH 설정
10. at과 cron, systemd timer 비교
용도 | 도구 | 특징 |
---|---|---|
단발성 작업 | at | 한 번만 실행 |
반복 작업 | cron | 분/시간 단위 반복 |
서비스 연계 | systemd timer | 서비스와 통합된 반복 예약 |
체크 부분
- at 패키지와 atd 서비스가 설치·활성화 되어 있는지 확인
- 사용자가 at 예약 권한이 있는지 확인 (
/etc/at.allow
,/etc/at.deny
) - 스크립트 내 절대 경로 또는 환경 변수 명시
- 실행 결과 수집용 메일이나 로그 준비
필요하면 배포판별 상세 튜닝(로그 위치, 패키지명 등)과 함께 추가 가이드도 만들어 드릴 수 있습니다. 궁금한 점 있으면 언제든 말씀해 주세요!
반응형