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