OS/Linux - Ubuntu

[Linux - 리눅스 / Ubuntu - 우분투] 작업 예약(일회성) - at(부가 'sudo' 명령어)

주누다 2015. 3. 23. 23:31
반응형

at - 정해신 시간에 한 번 실행

- 기능 : 예약한 명령을 정해진 시간에 실행(한번만)

- 형식 : at [옵션] 시간

- 옵션 :

 => '-l' : 현재 실행 대기 중인 명령의 전체 목록 출력(atq 명령과 동일)

 => '-r' 작업 번호 : 현재 실행 대기 중인 명령 중 해당 작업 번호 삭제(atrm 명령과 동일)

 => '-m' : 출력 결과가 없더라도 작업이 완료되면 사용자에게 메일로 알려줌

 => '-f' 파일 : 표준 입력 대신 실행할 명령을 파일로 지정


- 사용 예 : at -m 0730 tomorrow, at 10:00 pm, at 8:15 am May 30

- 우분투에 'at' 명령이 기본적으로 설치되지 않은 경우도 있음.

- 'at' 명령의 결과를 받기 위해서는 메일이 설치되어있어야함(mailutils)

 => sudo apt-get install mailutils


p.s

 - 'sudo' 명령은 root 계정으로 실행 가능한 명령을 일반 사용자가 실행할 수 있도록 도와줌.

 사용자가 'sudo' 명령을 사용할 수 있도록 '/etc/sudoers' 파일에 지정되어 있어야 함.

 - 'sudo' 명령을 사용할 때는 root 게정의 암호가 아닌 'sudo' 명령을 실행한 계정의 암호를 입력.

 - 5분 이내로 'sudo' 명령 입력시 다시 입력하라고 하지 않음.



at 명령 설정

- 정해진 시간에 명령을 실행하도록 예약하려면 명령 뒤에 시간을 명시

ex) at 23:55, at 11:행55 pm

- at 명령에서 시간을 지정할 때 'HH:MM' 형태 뿐만 아니라 'HHMM' 형태도 지원

- todya, tomorrow, hours, days, weeks 형태도 가능' '


- at 1am + 2days : 지금부터 2일 후 오전 1시에 작업을 수행

- at 7am Jul 16 : 7월 16일 오전 7시에 작업을 수행

- at 2pm tomorrow : 내일 오후 2시에 작업을 수행

- at 07:50pm today : 오늘 오후 7시 50분에 작업을 수행


- at 로 실행할 명령은 기본적으로 표준입력으로 지정

- 명령의 입력을 마치려면 'Ctrl + d' 입력

- 'Ctrl + d' 입력시 <EOT>가 출력


user@ubuntu:~$ at 07:30 am  => 시간 지정

at> echo 'Good Morning'  => 실행할 명령 지정

at> <EOT>  => 'Ctrl + d' 을 입력하여 종료

job 1 at Tue Feb 17 11:40::00 2015  => 작업 예약이 완료



at 명령 실행 결과 확인

- 명령의 실행 결과는 메일로 전달됨

- 명령이 실행되면 메일이 도착했다는 메시지 출력

- 'mail' 명령으로 확인가능



at 작업 파일 확인

- 'at'로 생성된 작업 파일은 '/var/spoool/cron/atjobs'에서 확인 가능(작업 파일이 생성)

- 'atjobs' 디렉터리의 내용은 daemon 그룹의 사용자만 확인 가능(sudo 명령을 사용해 확인 가능)

- 예약된 명령이 실행되면 자동으로 작업 파일 삭제



at 작업 목록 확인 : -l 옵션, atq

- at 명령으로 설정된 작업의 목록은 '-l' 옵션으로 확인 가능

- '-l' 옵션 명령외로 'atq' 명령으로도 확인 가능

atq

- 기능 : 현재 사용자의 등록된 작업 목록 출력. 슈퍼 유저의 경우 모든 사용자의 작업 목록 출력

- 형식 : atq



at 작업 삭제 : -d옵션, atrm 

- 명령으로 설정한 작업이 실행되기 전에 삭제시, '-d' 옵션을 사용

- 삭제할 작업 번호를 지정하면 됨

- 'atrm' 명령은 'at -d' 옵션과 같은 기능 수행

atrm

- 기능 : 지정한 작업 번호와 작업을 삭제

- 형식 : atrm [작업 번호]



at 명령 사용 제한

- 시스템 관리자는 일반 사용자들이 'at' 명령을 사용하도록 허용하거나 사용하지 못하도록 제한 가능

- '/etc/at.allow' 파일과 '/etc/at.deny' 파일 로 제한 설정 가능

- '/etc/at.allow' - 허용된 사용자

- '/etc/at.deny' - 사용금지 사용자

- '/etc/at.deny' 파일은 기본적으로 있지만, '/etc/at.allow' 파일은 없음(필요시에 관리자가 만들어야 함)

- '/etc/at.deny' '/etc/at.allow' 파일에는 한 줄에 사용자 이름을

'/etc/at.allow', '/etc/at.deny' 파일 적용 기준

- '/etc/at.allow' 파일이 있으면 이 파일에 있는 사용자만 at 명령 사용가능('/etc/at.deny' 파일은 무시됨)

- '/etc/at.allow' 파일이 없으면 '/etc/at.deny' 파일에 지정된 사용자를 제외한 모든 사용자 가능

- 두 파일이 없을 경우, root만 명령 사용가능

- 한 사용자가 두 파일에 속해 있을경우, 그 사용자는 'at' 명령 사용가능('/etc/at.allow' 파일이 적용되기 때문)

- '/etc/at.deny' 를 빈 파일로 두면 모든 사용자가 'at' 명령 사용가능(초기 설정)




p.s

메일이 설치되어 있지 않을 경우

- 터미널에 나오는대로 'sudo apt-get install mailutils'

- 터미널에서 메일 쓰고 받는 등 작업을 안 한다면 'PostFix' 설치시 '로컬에만 사용' 선택

- '로컬에만 사용' 으로 선택하지 않고 다른 것으로 한다면 작업 결과가 메일로 오지 않음...

  (다른 거 선택 후 어떻게 설정해야할지 모르겠음..ㅠ_ㅠ 뻘짓으로 5시간 버림..ㅠ_ㅠ

   더 공부해보고 나중에 해봐야지...)

- 초보이고, 터미널에서 메일 읽고 쓰기 안 하고... 책 보면서 공부중이고.. 작업 예약 관련 스터디 하고 있다면

 '로컬에만 적용' 으로...ㅠ_ㅠ




반응형