"리눅스 1회성 예약작업 at, atd"의 두 판 사이의 차이

잔글 (봇: 자동으로 텍스트 교체 (-==참고 자료== +==참고==))
 
(사용자 2명의 중간 판 18개는 보이지 않습니다)
1번째 줄: 1번째 줄:
 
{{소문자}}
 
{{소문자}}
;at
+
;at, atq, atrm
 
;/usr/bin/at
 
;/usr/bin/at
;
+
;/usr/bin/atq
 +
;/usr/bin/atrm
  
 
;atd
 
;atd
16번째 줄: 17번째 줄:
 
* 예약작업 등록
 
* 예약작업 등록
 
<source lang='bash'>
 
<source lang='bash'>
echo "명령어" | at 0000-00-00 00:00
+
echo "명령어" | at 00:00 0000-00-00
 
echo "명령어" | at 00:00
 
echo "명령어" | at 00:00
 
at 0000-00-00 00:00 -f 스크립트.sh
 
at 0000-00-00 00:00 -f 스크립트.sh
25번째 줄: 26번째 줄:
 
atq
 
atq
 
at -l
 
at -l
 +
</source>
 +
* 예약작업 내용 확인
 +
<source lang='bash'>
 +
at -c 번호
 
</source>
 
</source>
 
* 작업 삭제
 
* 작업 삭제
32번째 줄: 37번째 줄:
 
at -r 번호
 
at -r 번호
 
</source>
 
</source>
* /etc/at.deny 에 계정을 추가하여 at 사용을 금지시킬 수 있다.
+
* /etc/at.deny 에 계정을 추가하여 at 사용을 금지시킬 수 있다.<ref>기본적으로 /etc/at.deny에는 내용이 없다.</ref>
:/etc/at.allow 파일을 만들면 그곳에 기록된 사용자 외에는 모두 금지된다.<ref>단, root는 무조건 허용됨</ref>
+
:/etc/at.allow 파일을 만들면 그곳에 기록된 사용자 외에는 모두 금지된다.<ref>단, root는 무조건 허용됨. 기본적으로 /etc/at.allow은 존재하지 않는다.</ref>
  
 
==atd==
 
==atd==
 
*at 수행을 위한 데몬
 
*at 수행을 위한 데몬
<source lang='dos'>
+
<source lang='console'>
[root@jmnote ~]# service atd status
+
[root@zetawiki ~]# service atd status
 
atd (pid  2205) is running...
 
atd (pid  2205) is running...
 
</source>
 
</source>
  
==실습==
+
==실습 1: 명령어 등록==
<source lang='dos'>
+
<source lang='console'>
[root@jmnote ~]# ll /root/hello.txt
+
[root@zetawiki ~]# ll /root/hello.txt
 
ls: /root/hello.txt: No such file or directory
 
ls: /root/hello.txt: No such file or directory
[root@jmnote ~]# date
+
[root@zetawiki ~]# date
 
Thu Feb 13 23:27:03 KST 2014
 
Thu Feb 13 23:27:03 KST 2014
[root@svn0 ~]# echo "echo hello > /root/hello.txt" | at 2330 feb 13
+
[root@zetawiki ~]# echo "echo hello > /root/hello.txt" | at 23:30 2014-02-13
 
job 3 at 2014-02-13 23:30
 
job 3 at 2014-02-13 23:30
 
Can't open /var/run/atd.pid to signal atd. No atd running?
 
Can't open /var/run/atd.pid to signal atd. No atd running?
 
</source>
 
</source>
 
:→ 3번 작업으로 등록됨.  그런데 atd가 작동중이 아님
 
:→ 3번 작업으로 등록됨.  그런데 atd가 작동중이 아님
<source lang='dos'>
+
<source lang='console'>
[root@jmnote ~]# atq
+
[root@zetawiki ~]# atq
 
3 2014-02-13 23:30 a root
 
3 2014-02-13 23:30 a root
[root@jmnote ~]# service atd start
+
[root@zetawiki ~]# service atd start
 
Starting atd:                                              [  OK  ]
 
Starting atd:                                              [  OK  ]
 
</source>
 
</source>
 
:→ atd가 작동중이어야 atq 예약작업이 수행된다.
 
:→ atd가 작동중이어야 atq 예약작업이 수행된다.
 
:→ 여기서 a는 at에 의해 등록되었음을 나타낸다.<ref>batch 명령어에 의해 등록된 경우는 b로 표시됨</ref>
 
:→ 여기서 a는 at에 의해 등록되었음을 나타낸다.<ref>batch 명령어에 의해 등록된 경우는 b로 표시됨</ref>
<source lang='dos'>
+
<source lang='console'>
[root@jmnote ~]# date
+
[root@zetawiki ~]# date
 
Thu Feb 13 23:31:53 KST 2014
 
Thu Feb 13 23:31:53 KST 2014
[root@jmnote ~]# atq
+
[root@zetawiki ~]# atq
[root@jmnote ~]# ll /root/hello.txt
+
[root@zetawiki ~]# ll /root/hello.txt
 
-rw-r--r-- 1 root root 6 Feb 13 23:30 /root/hello.txt
 
-rw-r--r-- 1 root root 6 Feb 13 23:30 /root/hello.txt
 
</source>
 
</source>
 
:→ 23:30에 hello.txt 생성됨. atq 목록에서 사라짐<ref>atd가 작동중이 아니라면 예약작업이 수행되지 않으며, atq 목록에 계속 남아있게 된다.</ref>
 
:→ 23:30에 hello.txt 생성됨. atq 목록에서 사라짐<ref>atd가 작동중이 아니라면 예약작업이 수행되지 않으며, atq 목록에 계속 남아있게 된다.</ref>
 +
 +
==실습 2: 스크립트 등록==
 +
<source lang='console'>
 +
[root@zetawiki ~]# cat hello.sh
 +
#!/bin/bash
 +
echo hello
 +
</source>
 +
<source lang='console'>
 +
[root@zetawiki ~]# at now + 4 hour -f hello.sh
 +
job 6 at 2014-05-28 03:03
 +
</source>
 +
<source lang='console'>
 +
[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
 +
</source>
 +
:→ 환경변수([[env]])가 모두 export되고 스크립트 파일의 내용이 덧붙여진다.
  
 
==같이 보기==
 
==같이 보기==
*[[크론]] (반복 예약작업)
+
*[[리눅스 반복 예약작업 cron]]
 
*[[윈도우 at]]
 
*[[윈도우 at]]
 
*[[리눅스 batch]]
 
*[[리눅스 batch]]
 +
*[[env]]
 +
*[[at.allow, at.deny]]
  
 
==주석==
 
==주석==
 
<references/>
 
<references/>
  
==참고 자료==
+
==참고==
 
*https://en.wikipedia.org/wiki/At_(Unix)
 
*https://en.wikipedia.org/wiki/At_(Unix)
  
 
[[분류: 리눅스]]
 
[[분류: 리눅스]]

2017년 7월 11일 (화) 03:29 기준 최신판

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 }}