리눅스마스터1급 : at을 통한 예정 작업 설정
작성자 정보
- 관리자 작성
- 작성일
컨텐츠 정보
- 1,175 조회
- 0 추천
-
목록
본문
리눅스마스터1급 : at을 통한 예정 작업 설정
at는 정해진 시간에 지정된 작업을 수행할 수 있는 명령어이다.
이 명령은 특정일의 지정된 시각에 지정된 작업을 1회 실행한다.
그리고 at에 관련된 at, batch, atq, atrm 등의 명령들은 나중에 실행할 작업에 대한 설정, 검사, 삭제를 할 수 있는 명령들이다.
이것들에 의해 지정된 명령들은 atd 데몬을 통해서 수행한다.
이것을 통해 일정한 시간에 시스템에서 명령을 수행할 수 있게 된다.
다음은 특정 시스템에서 atd 데몬이 PID 462번으로 실행되고 있는 것이다.
리눅스에는 이 데몬이 기본적으로 설정이 되어 있으므로 따로 설치하지 않아도 실행이 가능하다.
|
|
|
| $ ps -e | grep atd 462 ? 00:00:00 atd |
|
|
|
|
① 개요
at에 관련된 명령어들은 at과 이것의 실행에 관련된 것들이다.
기본 용법은 다음과 같다.
|
|
|
| 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에는 다음과 같은 옵션들이 있다.
옵션 | 설명 |
-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 | 명령행에 나열된 작업들을 표준 출력으로 보여준다.
|
③ 설명
ⓐ at의 사용
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/at-*/timespec에 되어 있다.
ⓑ 명령 수행
at과 batch 둘 다 표준 입력이나 -f 옵션으로 지정한 파일에서 명령을 읽어 수행한다.
작업 디렉토리, 환경 변수(TERM, DISPLAY와 _ 변수는 제외)와 umask는 호출 당시의 것이 유지된다.
su 쉘로부터 실행된 at - 또는 batch - 명령은 현재 사용자 ID를 유지할 것이다.
표준 에러나 표준 출력으로 출력되는 명령 수행 결과가 있다면 메일로 받게 된다.
메일은 /usr/sbin/sendmail 명령을 사용하여 보내진다.
만약 at이 su 쉘에서 실행되었다면 로그인 쉘의 사용자가 메일을 받을 것이다.
ⓒ 사용 권한
수퍼 유저는 어떤 경우에도 이 명령들을 사용할 수 있으나 다른 사용자는 /etc/at.allow과 /etc/at.deny의 내용에 따라 사용 권한이 결정된다.
만약 /etc/at.allow 파일이 존재하면 그 파일에 명시된 사용자만이 at 명령을 사용할 수 있다.
그리고 만약 /etc/at.allow가 존재하지 않으면 /etc/at.deny에 명시되지 않은 모든 사용자가 at을 사용할 수 있다.
또한 두 파일 모두 존재하지만 파일의 내용이 없다면 모든 사용자가 at 사용이 가능하고, 만약 두 파일이 모두 존재하지 않으면 수퍼 유저만이 at을 사용할 수 있다.
관련자료
-
이전
-
다음