Information Security

14-2 예약 작업(at, cron) 본문

Linux

14-2 예약 작업(at, cron)

leeeeye321 2017. 9. 27. 14:21

데몬 동작 유형

(1) xinetd 데몬 기반

-다른 데몬을 관리하는 데몬으로 슈퍼 데몬이라고도 불린다.

-사용자의 요청이 있을 때만 실행되는 형태로 응답 속도는 느리지만, 리소스 소모는 적은 형태이다.

-telnet 서비스 사용 시 실행

 

(2) standalone

-항상 백 그라운드 상태로 메모리에 상주하고 있는 형태로 동작하며

사용자의 요청이 있을 때 빠르게 응답하지만 리소스 소모가 많다.

-http, dns(bind), samba, nfs, ftp 등..

 


 

예약 작업(at, cron)

at    정해진 시간에 설정한 명령어를 "한 번" 실행

cron    정해진 시간에 설정한 명령어를 "반복" 실행

 

at

-at 설치

 

-at 명령어 작업의 결과를 사용자에게 전달하는데 사용되는 프로그램

 

 

설치 완료!

 

at 데몬(atd) 실행

 

#at [옵션] [시간]

[옵션]

-l(list)    현재 실행 대기 중인 목록 출력(#atq)

-d    현재 실행 대기 중인 목록 삭제(#atrm)

 

[시간]

yyyy-mm-dd, HH:MM, today, tomorrow, days, now, am, po 등

-자세한 시간 형식 정보는 man 명령어로 확인

ex) #at 7pm + 2days    2일 후, 오후 7시에 작업 실행

#at 10am jul 18    7월 18일 오전 10시에 작업 실행

#at 3am tomorrow    내일 오전 3시에 작업 실행

 

오늘(지금)부터 1분 뒤에 at> 프롬프트에 입력한 명령어가 실행된다.

 

명령어를 입력하다가 잘못 입력했을 때 backspace를 계속 눌러도 지워지지 않는다.

여기서 지울 때는 [Ctrl + backspace]를 눌러야 지워진다.

 

명령어 입력 -> 입력을 완료하면 [Ctrl + d]를 누른다.

 

 -> <EOT>라는 메시지가 출력된다.

-job [작업번호] at [실행되는 시간]

 

<EOT>     End Of Transmission    전송 완료

<EOL>    End Of Line

<EOF>    End Of File

 

현재 실행 대기 중인 목록 확인(-l)

 

예약한 대로 1분 후 at_test 디렉터리가 생성되었다.

 

출력 리다이렉션으로 파일 안에 내용이 들어간 것을 확인할 수 있다.

※at 예약 작업은 /var/spool/at 디렉터리에 임시 작업 파일(큐 파일)이 저장되며,

 작업이 완료되면 자동으로 삭제된다.

-at 작업의 결과가 화면에 출력되는 작업일 경우,

 /var/spool/mail 디렉터리에 사용자 이름으로 된 메시지 파일에 결과가 저장된다.

 


cron

현재 crond 데몬의 상태 확인

 

 

crontab [옵션]

-cron을 관리하고 특정 작업을 주기적으로 반복할 때 사용

[옵션]

-   설정된 crontab 작업 확인

-   crontab 작업 삭제

-e [계정명]    해당 계정의 crontab 수정

(계정명을 사용하지 않으면 현재 로그인한 계정)

-u [계정명]    해당 계정의 crontab 확인

 

-crontab 파일은 사용자 별로 생성되며, 해당 파일에 주기적으로 반복해야 하는 작업의 내용을 작성할 수 있고,

한 라인에 하나의 작업을 설정한다.

 

[crontab 형식]

-6개의 필드로 구성, 각 필드는 공백 문자로 구별

 

crontab 형식 파일

 

 

분 

시 

일 

월 

요일 

작업 내용 

0~58 

0~23 

1~31 

1~12 

0~6 

명령어/스크립트 경로 

*    해당 항목의 모든 값

-    두 숫자 사이 포함된 범위

 

필드

1-5 -> 1분, 2분, 3분, 4분, 5분

1,5 -> 1분, 5분

10/2 -> 2, 4, 6, 8, 10 (10분까지 2분 마다)

(/ : 시간 간격 지정)

 

ex) 30 23 1 * * [작업내용]

매요일, 매월, 1일 23시 30분 마다 [작업 내용] 반복하겠습니다.

 


 

[스크립터 작성 방법]

 

 스크립트 파일은 확장자 .sh를 붙인다.

 

-주기적으로 반복할 내용 작성

-파일의 이름이 중복되어 덮어쓰는 것을 방지하기 위해 date 서식 문자(%r)를 이용하여

시간/날짜를 파일의 이름으로 사용할 수 있다.

 

crontab 수정(-e) -> vi 편집기 실행됨

 

위의 내용 추가 후 저장

 

설정된 crontab 확인

 

#chmod +x [스크립트명]

-다른 프로그램이 해당 스크립트 파일을 실행 시키려면 해당 파일에 실행 권한이 있어야 한다.

 

실행 권한 확인

 

1분 마다 touch 명령어가 실행되는 것을 확인할 수 있다.

 


[cron 사용 제한]

-/etc/cron.allow, /etc/cron.deny 파일로

사용자의 crontab 명령어 사용을 허용(allow), 차단(deny)할 수 있다.

-/etc/cron.allow 파일은 관리자가 직접 생성해야 하고,

/etc/cron.deny 파일은 기본적으로 생성되어 있는 파일이다.

-vi 편집기 이용하여 해당 파일을 편집할 수 있으며, 각 라인에 하나의 계정명을 입력한다.

 

계정 추가

 

1. aaa 계정이 crontab 명령어를 사용할 수 없도록 차단

/etc/cron.deny 파일 열기

 

crontab 명령어 사용을 차단할 계정(aaa) 입력 후 저장

 

aaa 계정으로 스위칭하여 crontab 명령어 사용 여부 확인

crontab 명령어 사용 불가능

 

-이번엔 bbb 계정으로 스위칭

-crontab 명령어 사용 가능

 

※ cron.allow 파일은 없고, cron.deny 파일만 있을 경우

cron.deny 파일에 명시되지 않은 사용자(bbb)만 crontab 명령어 사용 가능

 

2.  bbb 계정이 crontab 명령어를 사용할 수 있도록 설정

vi 명령어로 /etc/cron.allow 파일 생성

 

crontab 명령어 사용을 허용할 계정(bbb) 입력 후 저장

 

bbb 계정으로 스위칭하여 crontab 명령어 사용 여부 확인

 

또 다른 계정 추가

 

-ccc 계정으로 스위칭

-crontab 명령어 사용 불가능

 

※ cron.allow, cron.deny 파일 둘 다 있을 경우

cron.allow 파일에 명시된 사용자만 crontab 사용이 가능하다.

 

3. /etc/cron.allow, /etc/cron.deny 파일을 모두 삭제

일반 사용자 계정으로 스위칭하여 crontab 명령어 사용 여부 확인

 

 

일반 사용자 계정 aaa, bbb, ccc 모두 crontab 명령어 사용 불가능 

 

※ cron.allow, cron.deny 파일 둘 다 없을 경우에는

 root만 crontab 사용 가능

 

※ at 명령어도 동일하게 /etc/at.allow, /etc/at.deny 파일을 이용하여 명령어 사용을 제한할 수 있다.

'Linux' 카테고리의 다른 글

16-1 파티션 설정 및 용량 증설  (0) 2017.09.29
15 파일 시스템 관리  (0) 2017.09.28
14-1 프로세스 관리2  (0) 2017.09.27
13-2 프로세스 동작 형태  (0) 2017.09.26
13-1 프로세스 관리  (0) 2017.09.26