And Brain said,
at vs cron, Linux 스케줄링의 두 가지 방법론 본문
Linux에서 작업을 예약 실행하는 방법에는 여러 가지가 있지만, 대표적으로 at와 cron이 있습니다. 이 두 가지 스케줄링 방식은 목적과 사용 방식이 다르므로, 각 방법의 차이점을 이해하고 적절한 상황에서 사용하는 것이 중요합니다.
1. at 명령어: 단발성 작업 예약
1.1 at 개요
at 명령어는 특정 시간에 한 번만 실행되는 작업을 예약하는 데 사용됩니다. 반복 실행이 필요하지 않은 경우 적합합니다.
1.2 at 사용 방법
at을 사용하려면 atd 서비스가 활성화되어 있어야 합니다. 먼저 서비스가 실행 중인지 확인합니다.
sudo systemctl status atd
만약 inactive 상태라면 활성화합니다.
sudo systemctl start atd
1.3 at 기본 사용법
at 14:30
위 명령을 실행하면 프롬프트가 열리며, 예약할 명령을 입력한 후 Ctrl+D를 눌러 종료하면 됩니다. 예제:
at 14:30
ls -l /home/user > /home/user/list.txt
Ctrl+D
현재 시각 기준 1시간 후 실행
echo "shutdown -h now" | at now + 1 hour
내일 오전 7시에 실행
at 07:00 tomorrow
이번 주 금요일 오후 3시 실행
at 3pm Fri
5분 후 실행
at now + 5 minutes
1.4 atq & atrm: 예약된 작업 확인 및 삭제
예약된 작업 확인: atq
특정 작업 삭제: atrm [작업번호]
atq # 예약된 작업 목록 확인
atrm 2 # 작업번호 2번 삭제
2. cron 명령어: 반복 작업 예약
2.1 cron 개요
cron은 반복적으로 실행해야 하는 작업을 예약하는 데 사용됩니다. 특정 시간, 일, 주, 월 단위로 자동 실행됩니다.
2.2 cron 설정 파일 (crontab)
각 사용자마다 별도의 crontab을 가질 수 있으며, 이를 수정하려면 다음 명령을 사용합니다.
crontab -e
2.3 cron 표현식
crontab에서 작업을 예약할 때는 다음과 같은 형식을 사용합니다.
* * * * * 실행할 명령
분 시 일 월 요일 실행할 명령
0 6 * * * /home/user/backup.sh # 매일 오전 6시에 스크립트 실행
*/10 * * * * echo "Hello" >> /tmp/hello.log # 10분마다 실행
매일 자정에 로그 백업 실행
0 0 * * * /home/user/log_backup.sh
매주 일요일 오전 4시에 서버 재부팅
0 4 * * 0 /sbin/reboot
매월 1일과 15일 오전 8시에 특정 스크립트 실행
0 8 1,15 * * /home/user/script.sh
평일(월~금) 매일 오후 6시에 자동 로그 정리
0 18 * * 1-5 /usr/bin/cleanup_logs.sh
매 10분마다 특정 작업 실행
*/10 * * * * /home/user/task.sh
매시간 정각마다 시스템 상태 확인
0 * * * * /usr/bin/check_system.sh
매주 월요일과 수요일 오후 3시 30분 실행
30 15 * * 1,3 /home/user/script.sh
매년 12월 25일 오전 9시에 크리스마스 메시지 출력
0 9 25 12 * echo "Merry Christmas!"
2.4 crontab 관리
현재 사용자 crontab 확인: crontab -l
특정 사용자 crontab 확인: crontab -u [사용자] -l
예약된 작업 삭제: crontab -r
3. at vs cron 비교
기능 | at | cron |
실행 방식 | 단발성 실행 | 주기적 실행 |
설정 파일 | 없음 (작업 개별 저장) | /etc/crontab, crontab -e |
실행 시점 | 지정된 한 번의 시간 | 반복적인 특정 시간 |
삭제 가능 여부 | atrm으로 개별 삭제 가능 | crontab -e에서 수정 |
서비스 필요 여부 | atd 서비스 필요 | cron 데몬 필요 |
4. 언제 at을 사용하고 언제 cron을 사용할까?
at 사용 추천: 한 번만 실행할 스크립트나 특정 시간에만 동작해야 하는 작업
예: 5분 후 시스템 재부팅 echo "reboot" | at now + 5 minutes
cron 사용 추천: 정기적으로 반복 실행해야 하는 작업
예: 매일 자정에 로그 백업 0 0 * * * /home/user/log_backup.sh
5. 마무리
Linux에서 작업을 예약할 때 한 번만 실행할 작업은 at, 정기적으로 반복 실행할 작업은 cron을 사용하면 됩니다. 각각의 장점을 이해하고 적절한 상황에서 활용해 보세요 :)
'IT > Linux' 카테고리의 다른 글
rsyslog(rocket-fast system log), 유별난 시스템 로그 로켓 (0) | 2025.02.26 |
---|---|
systemd, Linux PID 1번의 이름을 가진자 (0) | 2025.02.20 |
Linux 로그인 전후 메시지 변경해보기 (0) | 2025.02.17 |
awk, Linux command 총정리 (1) | 2025.02.14 |
Shell, 최초의 UNIX CLI (bash, zsh, PowerShell) (0) | 2025.02.14 |