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시간 버림..ㅠ_ㅠ 더 공부해보고 나중에 해봐야지...) - 초보이고, 터미널에서 메일 읽고 쓰기 안 하고... 책 보면서 공부중이고.. 작업 예약 관련 스터디 하고 있다면 '로컬에만 적용' 으로...ㅠ_ㅠ |