28.3. At와 Batch

cron 과 anacron은 반복되는 작업을 스케줄하기 위해 사용된 반면에 at 명령은 특정 시간에 한번 실행될 작업을 스케줄하기 위해 사용됩니다. batch 명령은 시스템 부하 평균이 0.8 이하로 떨어질 경우 한번 실행될 작업을 스케줄하는데 사용됩니다.

at 또는 batch 명령을 사용하기 위해서는 at RPM 패키지를 설치되어 있어야 하며 atd 서비스가 실행 중이어야 합니다. rpm -q at 명령을 사용하여 패키지가 설치되었는지 여부를 알아봅니다. 서비스가 실행 중인지 알아보기 위해서는 /sbin/service atd status 명령을 사용합니다.

28.3.1. At 작업 설정하기

특정 시간에 한번 실행되는 작업을 스케줄하기 위해서는 at time 명령을 입력합니다. 여기서 time은 명령을 실행할 시간을 의미합니다.

time에는 다음 중 한가지 인자를 사용할 수 있습니다:

시간을 먼저 지정 후 옵션인 날짜를 지정합니다. 시간 형식에 대한 보다 많은 정보를 원하신다면, /usr/share/doc/at-<version>/timespec 텍스트 파일을 참조해 보십시오.

시간 인자와 함께 at 명령을 입력하면 at> 프롬프트가 출력됩니다. 실행할 명령을 입력 후 [Enter]를 치고 Ctrl-D를 입력합니다. 각각의 명령어를 입력한 후 [Enter] 키를 쳐서 더 많은 명령어를 지정할 수 있습니다. 모든 명령어 입력이 끝나면 [Enter]를 눌러 빈 칸으로 이동한 후 Ctrl-D를 입력합니다. 다른 방법으로는 프롬프트에서 쉘 스크립트를 입력할 수도 있습니다. 스크립트의 개별 라인을 입력 후 [Enter] 키를 치고 빈칸에서 Ctrl-D를 눌러 빠져나옵니다. 만일 스크립트가 입력되면, 사용자의 SHELL 환경과 로그인 쉘 또는 /bin/sh의 쉘 중에서 제일 먼저 발견된 쉘이 사용됩니다.

명령어나 스크립트로 정보를 표준 출력하면, 출력 결과는 사용자에게 이메일로 전달됩니다.

이후 실행할 작업을 보기 위해서는 atq 명령을 사용합니다. 보다 많은 정보를 원하시면 28.3.3 절을 참조해 주십시오.

at 명령을 제한하여 사용할 수 있습니다. 자세한 사항은 28.3.5 절을 참조하십시오.

28.3.2. Batch 작업 설정하기

부하 평균이 0.8 이하로 내려갈 경우 한번 작업을 실행하기 위해서는 batch 명령을 사용합니다.

batch 명령을 입력하면 at> 프롬프트가 출력됩니다. 실행할 명령을 입력 후 [Enter]를 치고 Ctrl-D를 입력합니다. 각각의 명령어를 입력한 후 [Enter] 키를 쳐서 더 많은 명령어를 지정할 수 있습니다. 모든 명령어 입력이 끝나면 [Enter]를 눌러 빈 칸으로 이동한 후 Ctrl-D를 입력합니다. 다른 방법으로는, 프롬프트에서 쉘 스크립트를 입력할 수도 있습니다. 스크립트 각각의 라인을 입력 후 [Enter] 키를 치고 빈칸에서 Ctrl-D를 눌러 빠져나옵니다. 만일 스크립트가 입력되면, 사용자의 SHELL 환경과 로그인 쉘 또는 /bin/sh 쉘 중에서 제일 먼저 발견된 쉘이 사용됩니다. 부하 평균이 0.8 이하로 떨어지는 즉시 명령어나 스크립트 세트가 실행될 것입니다.

명령어나 스크립트로 정보를 표준 출력하면, 출력 결과는 사용자에게 이메일로 전달됩니다.

이후 실행할 작업을 보기 위해서는 atq 명령을 사용합니다. 보다 많은 정보를 원하시면 28.3.3 절을 참조해 주십시오.

batch 명령을 제한하여 사용할 수 있습니다. 자세한 사항은 28.3.5 절을 참조하십시오.

28.3.3. 이후 실행할 작업 보기

이후 실행할 at와 batch 작업을 보시려면 atq 명령어를 사용하십시오. 출력 형식은 각 작업당 한 줄로 직업 번호, 날짜, 시간, 작업 구분과 사용자명 순입니다. 사용자는 오직 자신이 소유한 작업만을 볼 수 있습니다. 만일 루트 사용자가 atq 명령을 실행하면 모든 사용자의 작업 목록을 보여줍니다.

28.3.4. 추가 명령행 옵션

at와 batch에 대한 추가 명령행 옵션은 다음과 같습니다:

옵션설명
-f명령어나 쉘 스크립트를 프롬프트에서 지정하지 않고 대신 파일에서 읽어옴.
-m작업이 완료되면 사용자에게 이메일을 보냄.
-v작업이 수행될 시간을 보여줌.

표 28-1. at와 batch 명령행 옵션

28.3.5. At와 Batch로의 접근 통제하기

/etc/at.allow와 /etc/at.deny 파일을 사용하여 at와 batch로의 접근을 제한할 수 있습니다. 이 접근 통제 파일은 각각의 줄마다 하나의 사용자명이 있는 형식을 갖습니다. 이 두 파일에서 빈 공간은 허용되지 않습니다. 접근 통제 파일이 수정되더라도 at 데몬 (atd)을 재시작할 필요가 없습니다. at 또는 batch 명령이 실행될 때마다 접근 통제 파일이 읽혀집니다.

루트 사용자는 액세스 통제 파일에 상관없이 언제든지 at와 batch 명령어를 실행할 수 있습니다.

만일 at.allow 파일이 존재한다면 이 파일에 포함된 사용자만이 at 또는 batch 명령을 사용할 수 있으며 at.deny 파일은 무시됩니다.

만일 at.allow 파일이 존재하지 않는다면, at.deny에 포함된 모든 사용자는 at 또는 batch 명령을 사용할 수 없습니다.

28.3.6. 서비스 시작과 정지

/sbin/service atd start 명령을 사용하여 at 서비스를 시작합니다. 서비스를 정지하려면 /sbin/service atd stop 명령을 사용합니다. 부팅시 서비스를 시작하실 것을 권장합니다. 부팅시 자동으로 cron 서비스를 시작하는 방법에 대한 자세한 정보는 14 장을 참조하시기 바랍니다.