AT(1)

이름
at, batch, atq, atrm - 나중에 실행할 작업에 대한 설정, 검사, 삭제

사용법
at [-V] [-q queue] [-f file] [-mldbv] TIME
at -c job [job...]
atq [-V] [-q queue]
atrm [-V] job [job...]
batch [-V] [-q queue] [-f file] [-mv] [TIME]

설명
at와 batch는 나중에 /bin/sh를 이용하여 실행할 명령을 표준 입력이나 지정한 파일에서 읽어들인다.

at  지정한 시간에 명령을 실행한다.

atq 현재 사용자의 등록된 작업 목록을 보여준다. 만약 슈퍼 유저일 경우에는 모든 사람의 작업 목록을 보여준다. 출력 형식은 각 작업당 한 줄로 작업 번호, 날짜, 시간, 작업 구분 순이다.

atrm
    지정된 작업 번호의 작업을 삭제한다.

batch
    시스템 부하 수준이 낮을 때 명령을 수행한다; 즉, 부하 평균이 0.8 이하 또는 atrun으로 지정한 값 이하로 떨어졌을 때.

At은 POSIX.2 표준까지 포함하여 매우 복잡한 시간 형식도 지정할 수 있다. 그 날의 특정 시간에 작업을 수행하기 위해 HH:MM 형식으로 시간을 지정한다. (만약 시간이 이미 지났다면 다음날로 생각한다.) 또한 midnight, noon, 또는 teatime (4pm) 같은 문자와 아침 또는 저녁을 나타내기 위해 AM 또는 PM 와 같은 접미사를 사용할 수 있다. 또한 작업을 수행할 날짜에 대해서 month-name day year 형식으로 지정하거나 MMDDYY 또는 MM/DD/YY 또는 DD.MM.YY 형식으로 지정할 수 있다. 날짜 지정은 반드시 시간 지정 다음에 나와야 한다. 시간을 now + count time-units 형식으로 지정 할 수 있으며, time-units은 minutes, hours, days 또는 weeks 가 될 수 있다. 오늘 수행할 작업에는 today를, 내일 수행할 작업에는 tomorrow를 붙일 수 있다.

예를 들어, 지금부터 3일후 오후 4시에 작업을 수행하려면 at 4pm + 3 days, 7월 31일 오전 10:00에 작업을 수행하려면 at 10am Jul 31 내일 오후 1시에 작업을 수행하려면 at 1am tomorrow 과 같이 하면 된다.

시간 지정에 대한 정확한 정의는 /usr/doc/packages/at/timespec에 되있다.

at과 batch 둘 다 표준 입력이나 -f 옵션으로 지정한 파일에서 명령을 읽어 수행한다. 작업 디렉토리, 환경 변수 (TERM, DISPLAY와 _ 변수는 제외) 와 umask는 호출 당시의 것이 유지된다. su(1) 쉘로 부터 실행된 at - 또는 batch - 명령은 현재 사용자 ID를 유지할 것이다. 표준 에러나 표준 출력로 출력되는 명령 수행 결과가 있다면 메일로 받게 된다. 메일은 /usr/sbin/sendmail 명령을 사용하여 보내진다. 만약 at이 su(1) 쉘에서 실행되었다면 로그인 쉘의 사용자가 메일을 받을 것이다.

슈퍼 유저는 어떤 경우에도 이 명령들을 사용할 수 있으나 다른 사용자는 /etc/at.allow과 /etc/at.deny의 내용에 따라 사용 권한이 결정된다.

만약 /etc/at.allow 파일이 존재하면, 그 파일에 명시된 사용자만이 at 명령을 사용할 수 있다.

만약 /etc/at.allow이 존재하지 않으면, /etc/at.deny에 명시되지 않은 모든 사용자가 at을 사용할 수 있다.

만약 두 파일이 모두 존재하지 않으면, 슈퍼 유저만이 at을 사용할 수 있다.

/etc/at.deny를 빈 파일로 두면 모든 사용자가 명령을 사용할 수 있고, 이것이 초기 설정이다.

옵션

-V  표준 에러로 버전 번호를 출력한다.

-q queue
    명시한 큐를 사용한다. 큐 이름은 한 단어로 되어있다; 유효한 이름은 a부터 z까지와 A부터 Z까지이다. a 큐는 at의 초기값이고 b 큐는 batch의 초기값이다. 알파벳 순서로 뒤의 이름을 갖는 큐는 더 큰 niceness 값을 갖는다. 특별히 "=" 큐는 현재 수행되는 작업에 대한 큐로 예약되어 있다.

대문자 이름의 큐에 추가된 작업은 batch의 작업처럼 처리된다. atq에 큐 이름이 지정되면, 그 큐에 있는 작업들만 보여준다.

-m  출력 결과가 없더라도 작업이 완료될 때 사용자에게 메일을 보낸다.

-f file
    표준 입력이 아닌 file 에서 작업 명령을 읽는다.

-l  atq와 동일

-d  atrm과 동일

-v  작업이 수행될 시간을 보여준다.

환경 변수 POSIXLY_CORRECT이 설정되있지 않으면 "1997-02-20 14:50" 형식으로 시간이 표시되고, 설정되있는 경우에는 "Thu Feb 20 14:50:00 1996" 형식이 될 것이다.

-c  명령행에 나열된 작업들을 표준 출력으로 보여준다.

파일
/var/spool/atjobs
/var/spool/atspool
/proc/loadavg
/var/run/utmp
/etc/at.allow
/etc/at.deny

관련 항목
cron(1), nice(1), sh(1), umask(2), atd(8)

버그
리눅스에서 batch 의 올바로 수행되기 위해서는 /proc에 마운트된 proc 형식의 디렉토리들이 있어야 한다.

/var/run/utmp 파일을 사용할 수 없거나 손상된 경우나 at이 수행될 때 사용자가 로그인하지 않았다면 메일은 환경 변수 LOGNAME에서 지정한 사용자에게 보내진다. 만약 그 변수가 정의되지 않았거나 공백이라면 현재 사용자에게 전해진다.

현재 구현된 at과 batch는 자원을 많이 필요로하는 사용자에게 맞지 않다. 이런 경우라면 nqs와 같은 다른 일관 시스템을 고려해보는 것이 좋겠다.

저자
At의 대부분은 Thomas Koenig<ig25@rz.uni-karlsruhe.de>씨가 작성하였다.

역자
임종균 <hermes44@secsm.org>, 2000년 4월 23일