- at 스케줄링이란?
- at 스케줄링은 주로 프로그램을 특정시간에 한 번만 사용하고 싶을 때 이용한다.
즉, 주기적으로 돌아가는 crontab과 달리 일회성이다.
- at 명령어
- at명령어 프로그램을 사용하면 일회성의 프로세스(명령어) 실행 예약을 매우 간단하게 할 수 있다.
$ at [옵션] 시간
- 지정한 시간에 원하는 명령을 실행할 수 있다. 간단한 알림 메시지부터 복잡한 스크립트 등
- 예약된 작업은 /var/spool/at 디렉터리에 개별 파일로 저장된다.
- 실행 결과는 /usr/sbin/sendmail을 통해 메일로 전송된다.
- /etc/at.allow와 /etc/at.deny 환경설정 파일을 통해 at 명령어에 대한 접근제어가 가능하다.
- at 옵션
옵션 | 설명 |
-V | 버전을 보여준다. |
-q (queue) | queue 이름을 지정한다. |
-f 파일명 | 스크립트 파일 등을 실행해 줄 때 사용한다. |
-m | 작업이 완료될 때 사용자에게 메일을 보낸다. |
-M | 메일 보내기 않기 |
- t [[CC]YY]MMDDhhmm[.ss] | [[CC]YY]MMDDhhmm[.ss]로 시간 지정 |
-l | 예약된 작업 목록을 보여준다. |
- r | 예약된 작업을 삭제한다.(unix) |
-d | 예약된 작업을 삭제한다.(linux) |
TIME | 실행할 시간을 기록한다. 기본적으로 "hh:mm YYYY-MM-DD"로 적는다. hh:mm은 시간으로 24시간제를 기본으로 한다. |
- TIME 시간대는 hh:mm yyyy-mm-dd (시간:분 연도-월-날짜)의 형식이나 now+값 (minutes/hours/days)로 현재 시간 +(분/시간/일) 단위로 설정할 수 있다.
# : 2019년 12월 25일 21시 30분에 명령어 실행
at 21:30 2019-12-25
# : 현재 시간 5분 뒤에 명령어 실행
at now+5 minutes
- atq
- 현재 예약된 작업 목록을 확인하는 명령어. at -l 과 동일
qa@qa-VirtualBox:~$ atq
1 Wed Feb 9 20:00:00 202 a qa
# atq 출력 포맷
<job number> <date> <hour> <queue> <user-name>
- 대기 큐에서 대기 중인 작업들의 목록을 확인할 수 있다.
- 슈퍼 유저(root)인 경우에는 모든 유저의 대기 중인 작업이 출력되고, 그 외에는 로그인된 사용자의 작업이 출력된다.
- 작업을 설정할 때 큐를 설정할 수 있고, 'a-z'의 큐가 존재하며 'a'에 가까울 수록 우선순위가 높다. 큐를 설정하지 않으면 'a'가 기본이다.
- atrm
- 예약된 작업을 삭제. at -d 옵션과 동일
- batch
- 시스템에 부하를 주지 않도록 실행한다.
- at 사용법
- at 명령어는 시간 정보는 필수로 입력해야 하고, 그 외의 정보는 옵션이다.
- at 시간 명령어를 입력하고 실행한다.
- 그러면 at**>** 표준 입력을 할 수 있는 프롬프트 창이 나온다. 예약시간대에 이행할 명령어를 입력한다.
- 입력을 마치면 [Ctrl]+[D]로 종료(EOT, End Of Transmission) 하면 된다.
이렇게 하면 지정한 시간대에 해당 명령어가 실행하게 된다.
예시
# 내일 23시 00분에 yum update를 진행하라
[root@localhost backup]# at 23:00 tomorrow
at> yum -y update
at> reboot
# 그 후, Ctrl + D 클릭
at> <EOT>
job 1 at Sun Dec 27 23:00:00 2020
[root@localhost backup]#
# 23:01 분에 git을 설치하라는 명령어를 하나더 추가했더니, job2로 저장이 된다.
[root@localhost backup]# at 23:01 tomorrow
at> yum install git
at> reboot
# 그 후, Ctrl + D 클릭
at> <EOT>
job 2 at Sun Dec 27 23:01:00 2020
[root@localhost backup]#
- 예약된 리스트 확인
[root@localhost backup]# at -l
1 Sun Dec 27 23:00:00 2020 a root
2 Sun Dec 27 23:01:01 2020 a root
[root@localhost backup]#
- 예약 작업 제거
[root@localhost backup]# atrm 2
1 Sun Dec 27 23:00:00 2020 a root
[root@localhost backup]#
- at 사용자 접근제어
- at 명령어는 기본적으로 root 사용자만 사용할수 있다.
- 단, /etc/at.allow와 /etc/at.deny 두 파일을 이용해 일반 사용자의 사용 권한을 지정해 줄 수 있다.
/etc/at.allow
- 이 허용파일이 있는 경우 파일 내 지정된 사용자만 at를 등록할 수 있다.
- 지정되지 않은 사용자들은 at 명령을 실행할 수 없다.
/etc/at.deny
- 허용파일이 없는 경우에는 이 거부 파일이 사용된다.
- 파일 내 지정된 사람을 제외한 나머지 사용자에게 at 명령 실행 권한이 주어진다.
- 즉, at.deny 파일에 등록된 사용자는 at를 사용할 수 없게 된다.
두 파일 모두 없다면 루트 관리자만 사용할 수 있다.
Reference
https://inpa.tistory.com/entry/LINUX-📚-작업-스케줄러-명령어-💯-정리-at-crontab
'Programming > Linux' 카테고리의 다른 글
[Linux] rsync란? (0) | 2023.04.28 |
---|---|
[Linux] /tmp와 /var/tmp의 차이 (2) | 2023.03.11 |
[Linux] Nohup이란? (0) | 2023.03.10 |
[Linux] Crontab 이란? (0) | 2022.06.30 |