- 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 명령어는 시간 정보는 필수로 입력해야 하고, 그 외의 정보는 옵션이다.
  1. at 시간 명령어를 입력하고 실행한다.
  2. 그러면 at**>** 표준 입력을 할 수 있는 프롬프트 창이 나온다. 예약시간대에 이행할 명령어를 입력한다.
  3. 입력을 마치면 [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

https://freeblogger.tistory.com/13

https://ansan-survivor.tistory.com/432

'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

+ Recent posts