본문으로 건너뛰기

at 명령어를 사용해 작업 예약하는 방법은 무엇인가요?

💡 요약 정리

  • at 명령어는 특정 시간에 한 번만 작업을 실행하도록 예약할 때 사용합니다.
  • cron 명령어와 달리 반복 실행이 아닌 단회 실행을 위한 예약에 적합합니다.
  • 예약 작업은 atd 데몬이 실행 중일 때만 가능합니다.
  • atq 명령어로 예약 목록을 확인하고, atrm 명령어로 취소할 수 있습니다.
  • 예약된 작업은 /var/spool/at 디렉터리에 저장됩니다.

at 명령은 cron과는 달리 주기적인 작업이 아니라 특정시간, 한 번만 작업을 예약해 놓는 것입니다. at 명령을 사용하려면 우선 시스템에 atd 데몬을 띄워야 합니다.

1. at 명령어 사용 이전 준비


at 데몬을 시작해야 명령 사용이 가능합니다.

[root@localhost root]# /etc/rc.d/init.d/atd start

atd (을)를 시작합니다 :                                   [  확인  ]

2. 작업 예약 예시


① 오후 4시에 apache, sendmail 리스타트 작업 예약

[root@localhost root]# at 4:00 pm

warning: commands will be executed using (in order) a) $SHELL b) login shell c) /bin/sh
at> /usr/local/apache/bin/apachectl restart
at> /etc/rc.d/init.d/sendmail restart
at> <EOT>

job 1 at 2012-10-21 16:00

② 다양한 시간 예약 방법

예약 시간은 다음과 같은 방법으로 입력이 가능합니다.

  • at 4pm + 3 days (3일 후 오후 4시에 작업 실행)
  • at 10am Jul 31 (7월 31일 오전 10시에 작업 실행)
  • at 1pm tomorrow (내일 오후 1시에 작업 실행)

3. 예약 작업 확인


예약한 작업은 atq 명령어로 확인할 수 있습니다.

[root@localhost root]# atq

1        2012-10-21 16:00 a root

4. 시스템 리부팅 예약 예시


① 오후 11시 시스템 리부팅 예약

[root@localhost root]# at 11:00 pm

warning: commands will be executed using (in order) a) $SHELL b) login shell c) /bin/sh
at> shutdown -r now
at> <EOT>

job 2 at 2012-10-21 23:00

② 예약 확인

[root@localhost root]# atq

1        2012-10-21 16:00 a root
2        2012-10-21 23:00 a root

5. 예약 작업 내용 확인 및 확인 경로


예약된 at 작업은 /var/spool/at 디렉터리에 저장되며, 작업 파일은 해당 디렉터리 내에서 확인 가능합니다.

[root@localhost root]# cd /var/spool/at/

[root@localhost at]# ls

a00006011f57c4  a00007011f5968  spool

① 예약 작업의 상세 내용 확인

[root@localhost at]# cat a00006011f57c4

#!/bin/sh
# atrun uid=0 gid=0
# mail   root 0
umask 22
PWD=/root; export PWD
HOSTNAME=localhost.localdomain; export HOSTNAME
LESSOPEN=|/usr/bin/lesspipe.sh %s; export LESSOPEN
USER=root; export USER
LS_COLORS=no=00:fi=00:di=01;34:ln=01;36:pi=40;33...
MAIL=/var/spool/mail/root; export MAIL
INPUTRC=/etc/inputrc; export INPUTRC
BASH_ENV=/root/.bashrc; export BASH_ENV
LANG=ko_KR.eucKR; export LANG
SSH_CLIENT=10.30.100.150 2923 22; export SSH_CLIENT
LOGNAME=root; export LOGNAME
SHLVL=1; export SHLVL
USERNAME=root; export USERNAME
HISTSIZE=1000; export HISTSIZE
HOME=/root; export HOME
SSH_ASKPASS=/usr/libexec/openssh/gnome-ssh-askpass; export SSH_ASKPASS
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin; export PATH
JLESSCHARSET=ko; export JLESSCHARSET
SSH_TTY=/dev/pts/0; export SSH_TTY
OLDPWD=/home/httpd/check; export OLDPWD

cd /root || {
    echo 'Execution directory inaccessible' >&2
    exit 1
}

/usr/local/apache/bin/apachectl restart
/etc/rc.d/init.d/sendmail restart

6. 예약 작업 취소


이미 예약된 작업을 atrm 명령어로 취소할 수 있습니다.

[root@localhost at]# atq

1        2012-10-21 16:00 a root
2        2012-10-21 23:00 a root

[root@localhost at]# atrm 2

[root@localhost at]# atq

1        2012-10-21 16:00 a root