본문 바로가기

Foundation/- Linux

cron & at 이란???

At & Cron - 작업 예약 관리 프로그램
- 주기적으로 반복해야하는 작업에 사용


 ex) 로그 백업, 시스템 현황을 파일 저장하여 메일로 전송 등..

 #rpm -qa | grep at    // at 패키지 설치 유무
 #rpm -qa | grep mail    // mail 패키지 설치 유무

 #yum -y install at    // at 패키지 설치
 #yum -y install mail    // mail 패키지 설치
 #yum -y install cronie   // cron 패키지 설치
 
at - 정해진 시간 한번 작업을 수행하는 프로그램
 형식
  #at [옵션] [시간]
 옵션
  -l 현재 실행 대기 중인 목록을 출력 (#atq)
  -d  현재 실행 대기 중인 명령에서 해당 작업 삭제 (#atrm)
  시간
  yyyy-mm-dd, HH:MM, today, tomorrow, hours
  wekks, now ...
  자세한 정보는 man을 통해
 
 ex) at 6pm + 4days   //4일뒤 오후 6시에 작업 수행
     at 10am jul 18   //7월18일 오전 10시 작업 수행
     at 3am tomorrow   // 내일 오전 3시에 작업을 수행
     at 10:00am today  // 오늘 오전 10시에 작업 수행

     #service atd start   // at 데몬 실행
  
 #at today + 1min  // at 실행
 at> [명령어]
 at> [명령어]
 at>      // Ctrl + D 저장
 at> <EOT>    // End Of Transmission
  
 - at 예약 작업은 /var/spool/at 디렉토리에 임시 큐파일이
   저장이된다.
  
 - 작업이 완료되면 자동으로 삭제가되며, /var/spool/mail
   디렉토리에 사용자 명으로 결과가 저장된다.
   
   
 Cron
  기능 - crontab 파일을 관리
  형식
   (1) crontab -u [계정명] [옵션] // 다른 사용자 crontab 수정
   (2) crontab [옵션]    // 자신 crontab 수정
  옵션
   -l   crontab 파일의 목록을 출력
   -r  crontab 파일 삭제
   -e  crontab 파일 수정
   
crontab 파일 형식
 - 각 사용자별 하나의 crontab 파일이 있다.
 - 여러개의 작업을 저장할 수 있으며, 한 행 하나의 작업을 설정한다.
 - 예시 파일 (#cat /etc/crontab)
 
 분  시  일  월  요일 반복할 내용
 0~59 0~23  1~31 1~12 0~6  (스크립트 파일)
 
 - 일요일 (0), 월요일 (1), 토요일 (6)이며, 각 항목은 공백문자로 구분
 - 각항목의 값이 * (asterisk) 이면 해당 항목의 몯느 값을 의미힌다.
 - '-' 두 숫자 사이에 포함된 범위 (ex 1-5 --> 1,2,3,4,5)
 - ',' 로 구분하여 나열된 숫자 중 일치하는 경우를 지정
   (ex 1,3,5)
 - '/' 시간 간격을 지정할 수 있다. (ex) 10/2 --> 2, 4, 6 ,8 ,10)
 
 ex)30 23 1 * * [작업 내용]
 -> 매요일 매월 1일 23시 30분 [작업내용]
 
 ex)*/2 10 * * * [작업 내용]
 -> 매요일 매월 매일 10시 2분마다 [작업 내용]
 
 ex) 1-10 12 * * * [작업 내용]
 -> 매요일 매월 매일 12시 1분부터~10분까지 [작업 내용]
 
crontab -e  수정
 - /var/spool/cron 디렉토리에 사용자 이름으로 임시 파일 생성
 
 매요일 매월 매일 매시 1~3분 마다 /practice/ 디렉토리에
 cron_test 파일 생성

 1-3 * * * * touch /practice/cron_test
 #date -s "2017-04-21"
 
crontab 명령 사용 제한 하기
- /etc/cron.allow, /etc/cron.deny 파일로 사용자의 접근을 허용/차단 할 수 있다.
- 해당 파일에는 사용자의 이름을 한줄에 하나씩만 기록하며, /etc/cron.deny 파일은
  기본으로 생성되어 있지만, /etc/cron.allow 파일은 관리자가 직접 만들어야 한다.
 
  - /etc/cron.allow 파일이 있을 경우
 -> 해당 파일에 명시된 사용자만 사용 가능
 - /etc/cron.allow 파일은 없고, cron.deny 파일이 있을 경우
 -> cron.deny 파일에 명시되지 않은 사용자 사용이 가능
 
 #useradd cron_user1   // 테스트용 추가
 #su - cron_user1   // 스위칭
 $crontab -e     // 명령 사용 여부 확인
 $exit      // root 전환
 
 #vi /etc/cron.deny   // 거부 목록 파일 수정
 cron_user1     // 계정명 입력 후 저장 후 종료
 #su - cron_user1   // 스위칭
 $crontab -e     // 명령 사용 여부 확인
 
 - cron.allow, cron.deny 파일 둘다 없을 경우
 -> root 만 사용이 가능
 
 #mv /etc/cron.deny /etc/cron.deny_backup
 // 파일의 이름을 변경하여 파일을 인식하지 못하도록 설정
 
 #su - [일반사용자계정]
 $crontab -e       // 명령어 사용여부 테스트
 
 간단한 스크립트 작성법
 #vi [파일명].sh
 #!/bin/bash
 [명령어]   // 작성한 명령어가 순서대로 실행
 
 
 매일 오전 1시에 /var/log/secure 파일의 마지막 10줄을 저장하여
 /secure_log 디렉토리에 secure 파일로 저장이 되도록 설정
 스크립트는 /practice/test.sh 로지정

 #chmod +x /practice/test.sh   // 실행권한 추가....
 

 #service crond restart    // cron 데몬 재시작
 #mkdir /secure_log
 #crontab -e
 0 1 * * * /practice/test.sh
 
 #vi /practice/test.sh
 #!/bin/bash
 tail -10 /var/log/secure > /secure_log/secure

 #date -s "2017-04-21 00:59:55"
 
 크론탭 삭제
 #crontab -r
 #crontab -l
 no crontab for root
 #crontab -e
 1,2,3 * * * * /practice/test.sh
 1-3 * * * * /practice/test1.sh
 
 :wq   // 저장
 #mkdir /secure_log
 
 #vi /practice/test.sh
 #!/bin/bash
 touch /secure_log/test
 :wq
 
 #vi /practice/test1.sh
 #!/bin/bash
 touch /secure_log/test1
 :wq
 #date -s "2017-04-21"   // 매 1,2,3분 마다 파일 생성

'Foundation > - Linux' 카테고리의 다른 글

파이프&필터(grep)&cut&리다이렉션  (0) 2017.05.10
Bonding??  (0) 2017.05.10
RPM & YUM  (0) 2017.05.03
LVM  (0) 2017.05.02
쿼터란?  (0) 2017.05.02