단일 시스템 작업 예약(at)

다음 단원에서는 at 명령을 사용하여 다음 작업을 수행하는 방법을 설명합니다.

  • 나중에 실행할 작업(명령 및 스크립트) 예약

  • 이러한 작업을 표시 및 제거하는 방법

  • at 명령에 대한 액세스를 제어하는 방법

기본적으로 사용자는 자신의 at 작업 파일을 만들고, 표시 및 제거할 수 있습니다. root 또는 다른 사용자에 속하는 at 파일에 액세스하려면 수퍼유저 권한이 있어야 합니다.

at 작업을 제출할 때 작업 식별 번호가 .a 확장자와 함께 지정됩니다. 이 지정이 작업의 파일 이름과 대기열 번호가 됩니다.

at 명령의 설명

at 작업 파일 제출은 다음 단계를 따릅니다.

  1. at 유틸리티를 호출하고 명령 실행 시간을 지정합니다.

  2. 나중에 실행할 명령 또는 스크립트를 입력합니다.


    주 - 이 명령 또는 스크립트의 출력이 중요하면 나중에 조사할 수 있도록 출력을 파일로 재지정해야 합니다.


예를 들어, 다음 at 작업은 7월의 마지막 날 자정에 사용자 계정 smith에서 core 파일을 제거합니다.

$ at 11:45pm July 31
at> rm /home/smith/*core*
at> Press Control-d
commands will be executed using /bin/csh
job 933486300.a at Tue Jul 31 23:45:00 2004

at 명령에 대한 액세스 제어

지정된 사용자만 at 작업에 대한 대기열 정보를 만들거나, 제거, 표시하도록 허용하여 at 명령에 대한 액세스를 제어하도록 파일을 설정할 수 있습니다. at 명령에 대한 액세스를 제어하는 파일인 /etc/cron.d/at.deny는 사용자 이름 목록(한 라인에 사용자 이름 하나씩)으로 구성됩니다. 이 파일에 나열된 사용자는 at 명령에 액세스할 수 없습니다.

SunOS 소프트웨어 설치 중 생성된 at.deny 파일은 다음 사용자 이름을 포함합니다.

daemon
bin
smtp
nuucp
listen
nobody
noaccess

수퍼유저 권한으로 at.deny 파일을 편집하여 제한할 at 명령 액세스를 가진 다른 사용자 이름을 추가할 수 있습니다.

at 작업을 만드는 방법

  1. at 유틸리티를 시작하여 작업을 실행할 시간을 지정합니다.
    $ at [-m] time [date] 
    -m

    작업이 완료된 후에 전자 메일을 보냅니다.

    time

    작업을 예약할 시를 지정합니다. 24 시간제에 따라 시를 지정하지 않으려면 am 또는 pm을 추가합니다. 허용 가능한 키워드는 midnightnoonnow입니다. 분은 선택 사항입니다.

    date

    월의 처음 3자 이상, 주의 일 또는 키워드 today나 tomorrow를 지정합니다.

  2. at 프롬프트에서 실행할 명령 또는 스크립트를 한 라인에 하나씩 입력합니다.

    각 라인의 끝에 Return을 누르면 여러 개의 명령을 입력할 수 있습니다.

  3. at 유틸리티를 종료하고 Ctrl-D를 눌러 at 작업을 저장합니다.

    at 작업에 대기열 번호(작업의 파일 이름)가 지정됩니다. 이 번호는 at 유틸리티를 종료할 때 표시됩니다.

예 8-7 at 작업 만들기

다음 예는 사용자 jones가 오후 7:30에 백업 파일을 제거하기 위해 만든 at 작업을 보여줍니다. 사용자는 작업이 완료된 후에 전자 메일 메시지를 받도록 -m 옵션을 사용했습니다.

$ at -m 1930
at> rm /home/jones/*.backup
at> Press Control-D
job 897355800.a at Thu Jul  12 19:30:00 2004

at 작업 실행을 확인한 전자 메일 메시지를 받았습니다.

Your “at” job “rm /home/jones/*.backup”
completed.

다음 예는 토요일 아침, 오전 4:00에 jones가 대규모 at 작업을 예약하는 방법을 보여줍니다. 작업 출력이 big.file이라는 파일로 재지정되었습니다.

$ at 4 am Saturday
at> sort -r /usr/dict/words > /export/home/jones/big.file

at 대기열을 표시하는 방법

  • at 대기열에 대기 중인 작업을 확인하려면 atq 명령을 사용합니다.
    $ atq

    이 명령은 생성된 at 작업에 대한 상태 정보를 표시합니다.

at 작업을 확인하는 방법

  • at 작업을 만들었는지 확인하려면 atq 명령을 사용합니다. 다음 예에서 atq 명령은 jones에 속하는 at 작업이 대기열에 제출되었음을 확인합니다.
    $ atq
    Rank      Execution Date     Owner     Job         Queue   Job Name
      1st   Jul 12, 2004 19:30   jones  897355800.a     a     stdin
      2nd   Jul 14, 2004 23:45   jones  897543900.a     a     stdin
      3rd   Jul 17, 2004 04:00   jones  897732000.a     a     stdin

at 작업을 표시하는 방법

  • at 작업의 실행 시간에 대한 정보를 표시하려면 at -l 명령을 사용합니다.
    $ at -l [job-id]

    여기서 -l job-id 옵션은 상태를 표시할 작업의 식별 번호를 나타냅니다.

예 8-8 at 작업 표시

다음 예는 사용자가 제출한 모든 작업의 상태 정보를 제공하는 at -l 명령의 출력을 보여줍니다.

$ at -l
897543900.a    Sat Jul 14 23:45:00 2004
897355800.a    Thu Jul 12 19:30:00 2004
897732000.a    Tue Jul 17 04:00:00 2004

다음 예는 at -l 명령으로 단일 작업을 지정할 때 표시되는 출력을 보여줍니다.

$ at -l 897732000.a
897732000.a        Tue Jul 17 04:00:00 2004

at 작업을 제거하는 방법

시작하기 전에

root 또는 다른 사용자에 속하는 at 작업을 제거하려면 수퍼유저 또는 동등한 역할의 사용자여야 합니다. 역할에는 권한 부여 및 권한이 있는 명령이 포함됩니다.

자신의 at 작업을 제거하기 위해 수퍼유저 또는 동등한 역할의 사용자일 필요는 없습니다.

  1. 작업을 실행하기 전에 대기열에서 at 작업을 제거합니다.
    $ at -r [job-id]

    여기서 -r job-id 옵션은 제거할 작업의 식별 번호를 지정합니다.

  2. at -l(또는 atq) 명령을 사용하여 at 작업이 제거되었는지 확인합니다.

    at -l 명령은 at 대기열에 남은 작업을 표시합니다. 지정한 식별 번호를 가진 작업이 나타나지 않아야 합니다.

    $ at -l [job-id]

예 8-9 at 작업 제거

다음 예에서 사용자는 7월 17일 오전 4시에 실행하도록 예약된 at 작업을 제거하려고 합니다. 먼저, 사용자가 작업 식별 번호를 찾기 위해 at 대기열을 표시합니다. 그 다음, 사용자가 at 대기열에서 이 작업을 제거합니다. 마지막으로, 사용자가 이 작업이 대기열에서 제거되었는지 확인합니다.

$ at -l
897543900.a    Sat Jul 14 23:45:00 2003
897355800.a    Thu Jul 12 19:30:00 2003
897732000.a    Tue Jul 17 04:00:00 2003
$ at -r 897732000.a
$ at -l 897732000.a
at: 858142000.a: No such file or directory

at 명령에 대한 액세스를 거부하는 방법

  1. 수퍼유저 또는 동등한 역할의 사용자로 로그인합니다.

    역할에는 권한 부여 및 권한이 있는 명령이 포함됩니다. 역할에 대한 자세한 내용은 System Administration Guide: Security Services의 Configuring RBAC (Task Map)를 참조하십시오.

  2. /etc/cron.d/at.deny 파일을 편집하고 at 명령의 사용이 금지될 사용자 이름을 한 라인에 하나씩 추가합니다.
    daemon
    bin
    smtp
    nuucp
    listen
    nobody
    noaccess
    username1
    username2
    username3
    .
    .
    .

예 8-10 at 액세스 거부

다음 예는 사용자 smith 및 jones가 at 명령에 액세스할 수 없도록 편집한 at.deny 파일을 보여줍니다.

$ cat at.deny
daemon
bin
smtp
nuucp
listen
nobody
noaccess
jones
smith

at 명령 액세스가 거부되었는지 확인하는 방법

  • 사용자 이름이 /etc/cron.d/at.deny 파일에 올바르게 추가되었는지 확인하려면 사용자로 로그인한 동안 at -l 명령을 사용합니다. 사용자 smith가 at 명령에 액세스할 수 없으면 다음 명령이 표시됩니다.
    # su smith
    Password:
    $ at -l
    at: you are not authorized to use at.  Sorry.

    마찬가지로, 사용자가 at 작업을 제출하려면 다음 메시지가 표시됩니다.

    $ at 2:30pm
    at: you are not authorized to use at.  Sorry.

    이 메시지는 사용자가 at.deny 파일에 나열되었음을 확인합니다.

    at 명령 액세스가 허용된 경우 at -l 명령이 아무것도 반환하지 않습니다.



출처) http://docs.oracle.com/cd/E38901_01/html/E23088/sysrescron-35.html