강좌
클라우드/리눅스에 관한 강좌입니다.
리눅스 분류

시스템 예약작업을 설정하는 batch 사용법

작성자 정보

  • 관리자 작성
  • 작성일

컨텐츠 정보

본문

시스템 예약작업을 설정하는 batch 사용법

 

 

 

 

batch명령어는 예약작업을 설정하는 at명령어와 유사한 명령어로서 지정된 시간에 특정한 작업을 수행하도록 예약해두는 예약작업 명령어입니다.

 

 

 

 at명령어와 매우 유사하기 때문에 at대신 사용될 수도 있습니다.

 

 

 

 그리고 batch명령어는 at명령어에서 사용하는 모든 옵션들을 그대로 사용할 수 있으므로 at명령어와 함께 알아 두시면 좋습니다.

 

 

 

 그리고 at관련명령어인 atq, atrm명령어도 batch관련명령어로 사용할 수 있습니다.

 

 

 

 , batch명령어로 예약된 작업을 atq명령어로 확인할 수 있으며 또한 batch명령어로 예약된 작업을 취소할 때에는 atrm명령어를 사용합니다.

 

 

 

 

 

명령어위치 : /usr/bin/batch

 

사용형식 : batch [-V] [-q queue] [-f file] [-mv] [TIME]

 

 

 

 

 

[참고사항]

리눅스에는 예약작업 관한 명령어들이 있습니다.

 

 

 

 , at, atq, atrm, atd, atrun, batch등이 그것입니다.

 

 

 

 , 이들 명령어들은 모두 지정된 시각에 특정작업을 수행할 있는 예약작업 관한 명령어들로서 모두 함께 익혀두셔야하는 것입니다.

 

 

 

  이와 함께 주기적(반복적) 작업을 있는 crontab 관한 명령어들도 함께 알아두신다면 완벽해 있습니다.

 

 

 

 

 

 

 

 

그리고 특정 작업이 batch명령어로 예약설정되었을 때에는 /var/spool/at 디렉토리에 그 예약작업이 하나의 파일로 생성됩니다.

 

 

 

 이 또한 at와 동일합니다.

 

 

 

 

 

, 그럼 batch명령어로 특정 작업을 예약하고 atq로 예약된 작업을 확인하고, 그리고 atrm으로 예약된 작업을 취소하는 예를 보도록 하겠습니다.

 

 

 

 

 

먼저, /root디렉토리내에 backup.sh라는 스크립트파일이 존재합니다.

 

 

 

 이 파일을 batch로 예약 설정해 보겠습니다.

 

 

 

 

 

[root@command root]# ls -l backup.sh

-rwxr-xr-x    1 root     root           65 Mar 28 18:22 backup.sh

[root@command root]#

[root@command root]# cat backup.sh

/etc/rc.d/init.d/sendmail restart

/etc/rc.d/init.d/httpd restart

[root@command root]#

 

 

 

 

 

그리고 아래와 같이 이 스크립트를 지정한 시각에 실행하도록 하기 위하여 batch명령어를 수행 하였습니다.

 

 

 

 

 

[root@command root]# batch -f /root/backup.sh 20:00

job 11 at 2023-03-28 20:00

[root@command root]#

[root@command root]#

[root@command root]# batch -f /root/backup.sh 21:00

job 12 at 2023-03-28 21:00

[root@command root]#

 

 

 

 

위의 예에서 batch명령어로 backup.sh라는 스크립트가 20:00시와 21:00시에 각각 한번씩 실행되도록 두번의 batch명령어를 실행 하였습니다.

 

 

 

 

 

그리고 앞서 말씀드린바와 같이 이렇게 예약된 batch작업은 /var/spool/at디렉토리에 파일의 형태로 저장되어 있습니다.

 

 

 

  아래는 이를 확인한 것입니다.

 

 

 

 

 

[root@command root]# ls -l /var/spool/at

total 12

-rwx------    1 root     root         1807 Mar 28 18:34 b0000b0112c734

-rwx------    1 root     root         1807 Mar 28 18:34 b0000c0112c770

drwx------    2 daemon   daemon       4096 Mar 23 23:00 spool

[root@command root]#

 

 

 

 

 

, 두번의 batch작업을 예약하였으므로 두개의 파일이 존재하고 있음을 알 수 있습니다.

 

 

 

 그리고 이 중 하나의 파일 내용을 cat명령어로 확인해 보면 다음과 같습니다.

 

 

 

 

 

[root@command root]# cat /var/spool/at/b0000b0112c734

#!/bin/sh

# atrun uid=0 gid=0

# mail     root 0

umask 22

HOSTNAME=command.superuser.co.kr; export HOSTNAME

PVM_RSH=/usr/bin/rsh; export PVM_RSH

HISTSIZE=1000; export HISTSIZE

SSH_CLIENT=192.168.0.12\ 1393\ 22; export SSH_CLIENT

QTDIR=/usr/lib/qt-3.1; export QTDIR

SSH_TTY=/dev/ttyp0; export SSH_TTY

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:cdz=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

PVM_ROOT=/usr/share/pvm3; export PVM_ROOT

USERNAME=root; export USERNAME

PATH=/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:

/usr/sbin:/usr/bin:/usr/X11R6/bin:/root/bin; export PATH

MAIL=/var/spool/mail/root; export MAIL

PWD=/root; export PWD

INPUTRC=/etc/inputrc; export INPUTRC

LANG=en_US.UTF-8; export LANG

LAMHELPFILE=/etc/lam/lam-helpfile; export LAMHELPFILE

SSH_ASKPASS=/usr/libexec/openssh/gnome-ssh-askpass; export SSH_ASKPASS

HOME=/root; export HOME

SHLVL=1; export SHLVL

XPVM_ROOT=/usr/share/pvm3/xpvm; export XPVM_ROOT

BASH_ENV=/root/.bashrc; export BASH_ENV

LOGNAME=root; export LOGNAME

SSH_CONNECTION=192.168.0.12\ 1393\ 192.168.0.111\ 22; export SSH_CONNECTION

LESSOPEN=\|/usr/bin/lesspipe.sh\ %s; export LESSOPEN

G_BROKEN_FILENAMES=1; export G_BROKEN_FILENAMES

cd /root || {

         echo 'Execution directory inaccessible' >&2

         exit 1

}

/etc/rc.d/init.d/sendmail restart

/etc/rc.d/init.d/httpd restart

 

[root@command root]#

 

 

 

 

 

, batch명령어로 예약 설정된 작업은 위의 예에서 볼 수 있듯이 예약작업에 필요한 자세한 모든 설정내용들이 쉘스크립트로 저장되어 있습니다.

 

 

 

 

 

그리고 이번에는 batch명령어로 예약한 두개의 작업을 atq로 확인해 보도록 하겠습니다.

 

 

 

 

 

[root@command root]# atq

11      2023-03-28 20:00 b root

12      2023-03-28 21:00 b root

[root@command root]#

 

 

 

 

 

, batch명령어로 예약한 첫번째 작업번호가 11번으로 20:00시 정각에 실행되도록 설정되어 있으며 두번째 작업은 작업번호 12번으로 21:00시 정각에 실행하도록 설정되어 있다는 것을 알 수 있습니다.

 

 

 

 

 

그럼 이 두 작업 중 하나를 atrm명령어로 삭제해 보도록 하겠습니다.

 

 

 

 , 아래에서는 atrm이라는 명령어로 batch로 설정한 예약작업 중 11번 작업을 취소한 것입니다.

 

 

 

  그리고 다시 atq명령어로 예약되어 있는 작업을 확인해 보니 11번 작업은 삭제되어 보이지 않고 12번 작업만 남아 있다는 것을 알 수 있습니다.

 

 

 

 

 

[root@command root]# atrm 11

[root@command root]#

[root@command root]# atq

12      2023-03-28 21:00 b root

[root@command root]#

 

 

 

 

이번에 설명한 batch명령어는 at명령어와 거의 유사하다는 것을 아셨을 것입니다.

 

 

 

 그리고 여기서 사용한 atrm명령어와 atq명령어에 대한 보다 자세한 설명은 이 사이트(www.linux.co.kr)의 해당 명령어 강좌를  각각 참조하시기 바랍니다.

 

 

 

 

 

 

 

 

 

관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,034 명
  • 현재 강좌수 :  35,787 개
  • 현재 접속자 :  239 명