Information Security
14-2 예약 작업(at, cron) 본문
데몬 동작 유형
(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을 관리하고 특정 작업을 주기적으로 반복할 때 사용
[옵션]
-l 설정된 crontab 작업 확인
-r 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 |