리눅스 1회성 예약작업 at, atd

at, atq, atrm
/usr/bin/at
/usr/bin/atq
/usr/bin/atrm
atd
/usr/sbin/atd
앳데몬, 앳D

1 at[ | ]

  • 1회 작업 예약 리눅스 명령어
  • 지정한 명령어를 지정한 시각에 1회 실행하도록 하는 리눅스 명령어
  • 시간이 되면 수행되고 목록에서 사라진다.

1.1 명령어 예시[ | ]

  • 예약작업 등록
echo "명령어" | at 00:00 0000-00-00
echo "명령어" | at 00:00
at 0000-00-00 00:00 -f 스크립트.sh
at 0000-00-00 00:00 < 스크립트.sh
  • 목록 확인
atq
at -l
  • 예약작업 내용 확인
at -c 번호
  • 작업 삭제
atrm 번호
at -d 번호
at -r 번호
  • /etc/at.deny 에 계정을 추가하여 at 사용을 금지시킬 수 있다.[1]
/etc/at.allow 파일을 만들면 그곳에 기록된 사용자 외에는 모두 금지된다.[2]

2 atd[ | ]

  • at 수행을 위한 데몬
[root@zetawiki ~]# service atd status
atd (pid  2205) is running...

3 실습 1: 명령어 등록[ | ]

[root@zetawiki ~]# ll /root/hello.txt
ls: /root/hello.txt: No such file or directory
[root@zetawiki ~]# date
Thu Feb 13 23:27:03 KST 2014
[root@zetawiki ~]# echo "echo hello > /root/hello.txt" | at 23:30 2014-02-13
job 3 at 2014-02-13 23:30
Can't open /var/run/atd.pid to signal atd. No atd running?
→ 3번 작업으로 등록됨. 그런데 atd가 작동중이 아님
[root@zetawiki ~]# atq
3	2014-02-13 23:30 a root
[root@zetawiki ~]# service atd start
Starting atd:                                              [  OK  ]
→ atd가 작동중이어야 atq 예약작업이 수행된다.
→ 여기서 a는 at에 의해 등록되었음을 나타낸다.[3]
[root@zetawiki ~]# date
Thu Feb 13 23:31:53 KST 2014
[root@zetawiki ~]# atq
[root@zetawiki ~]# ll /root/hello.txt
-rw-r--r-- 1 root root 6 Feb 13 23:30 /root/hello.txt
→ 23:30에 hello.txt 생성됨. atq 목록에서 사라짐[4]

4 실습 2: 스크립트 등록[ | ]

[root@zetawiki ~]# cat hello.sh
#!/bin/bash
echo hello
[root@zetawiki ~]# at now + 4 hour -f hello.sh 
job 6 at 2014-05-28 03:03
[root@zetawiki ~]# at -c 6
... (생략)
SSH_CONNECTION=192.168.0.3\ 3224\ 192.168.0.39\ 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
}
${SHELL:-/bin/sh} << 'marcinDELIMITER38a2cae9'
#!/bin/bash
echo hello

marcinDELIMITER38a2cae9
→ 환경변수(env)가 모두 export되고 스크립트 파일의 내용이 덧붙여진다.

5 같이 보기[ | ]

6 주석[ | ]

  1. 기본적으로 /etc/at.deny에는 내용이 없다.
  2. 단, root는 무조건 허용됨. 기본적으로 /etc/at.allow은 존재하지 않는다.
  3. batch 명령어에 의해 등록된 경우는 b로 표시됨
  4. atd가 작동중이 아니라면 예약작업이 수행되지 않으며, atq 목록에 계속 남아있게 된다.

7 참고[ | ]

문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}