Linux ETC

at 으로 작업 예약 하기

2008.05.19 20:22

호스트웨이 조회 수:23488

['at' 으로 작업 예약 하기]


at 명령을 사용하여 특정 시간에 작업을 예약 하는 방법입니다.
at 명령은 cron과는 달리 주기적인 작업이 아니라 특정시간, 한번만 작업을 예약해 놓는 것입니다.
사용방법은 아래와 같습니다.


1) 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> (ctrl+d 입력)
job 1 at 2005-10-21 16:00

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

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

3) atq 명령으로 예약된 작업 확인

[root@localhost root]# atq
1 2005-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> (ctrl+d 입력)
job 2 at 2005-10-21 23:00
[root@localhost root]# atq
1 2005-10-21 16:00 a root
2 2005-10-21 23:00 a root

예약 된 at 작업은 /var/spool/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:so=01;35:bd=40;33;01:cd=40;33;01:or=01;05
;37;41:mi=01;05;37;41:ex=01;32:*.cmd=01;32:*.exe=01;32:*.com=01;32:*.btm=01;32:*.bat=01;32
:*.sh=01;32:*.csh=01
;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01
;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.gz=01;31:*.bz2=01;31:*.bz=01;31:*.tz=01;31:*.rpm=01;31
:*.cpio=01;31:*.jpg=01;35
:*.gif=01;35:*.bmp=01;35:*.xbm=01
;35:*.xpm=01;35:*.png=01;35:*.tif=01;35:; export LS_COLORS
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:/usr/X11R6/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

만일 예약해 놓은 작업을 취소 하고 싶을 경우는 atrm 명령으로
아래와 같이 작업 번호를 입력후 취소할수 있습니다.


[root@localhost at]# atq
1 2005-10-21 16:00 a root
2 2005-10-21 23:00 a root
[root@localhost at]# atrm 2
[root@localhost at]# atq
1 2005-10-21 16:00 a root
[root@localhost at]#