작업을 주기적으로 자동으로 수행해주는 명령어는 cron과 at이 있다.

cron은 주기적으로 같은 작업이 반복.(굉장히 많이 씀)
at은 딱 한번만 작업함.(별로 안씀)

리눅스에서는 데몬이라는 프로세스가 나를 대신해서 작업을 해주는데, cron이라는 작업을 해주는 데몬을 crond라고 한다.

주기적으로 해야 할 작업 목록을 crontab이라는 파일이라고 함.
누가 crontab을 수정했는지 알려면 "/var/spool/cron/사용자이름" 에 가보면 알 수 있다.



● crontab 수정

# crontab -e
또는
# vi /etc/crontab

위 명령어를 치면 crontab파일이 열리는데 그 안에 작업 목록을 적어준다.
"분 시(24시각제) 일 월 요일 작업"의 순서로 적어준다.
  예) 30 10 * * * /etc/a.sh 는 매일 매달 매요일 10시 30분에 /etc/a.sh에 들어있는 작업을 수행한다.(a.sh라는 스크립트 파일에 반드시 실행권한이 있어야 함)
       a.sh 스크립트 파일 안에 rm -fr /tmp/* 라는 줄이 있었다고 가정하면, 매일 매달 매요일 10시 30분에 tmp디렉토리 밑의 내용을 모두 삭제하는 작업이 수행된다.
       마찬가지로 tar -xcvf /data/a.tar.gz /etc/ 라고 하면, /etc/밑의 파일들을 data디렉토리 밑에 a.tar.gz라는 이름으로 압축하는 작업이 수행된다.


● crond 데몬 재시작(crontab파일을 수정한 후에는 재시작을 해줘야 함)

# /etc/init.d/crond stop
# /etc/init.d/crond start
또는
# service crond restart



[과제] 5분마다 한번씩 주기적인 작업을 하려면 어떻게 crontab을 써야 하나? */5 * * * * 해줄작업

[과제] 매일 새벽 02:00에 /etc 디렉토리를 압축해서 /data/해당날짜.tar.gz 로 만드는 cron작업을 수행하라.
    (단, 해당날짜형식은 4자리년도2자리월2자리일.tar.gz  즉 20100701.tar.gz)


1. 실습을 위해 /data와 /etc/cron.test 디렉토리를 생성한다.


2. /etc/crontab 파일 안에 매일 새벽 02:00에 할 작업을 예약한다.


3. 해당 시간에 수행할 스크립트를 /etc/cron.test 디렉토리 안에 생성하고 실행권한을 부여한다. 그리고 crond 데몬을 재시작한다.
 - 수행할 스크립트명 : myBackup.sh
#!/bin/sh

tar cvzf /data/$(date +%Y%m%d).tar.gz /etc


4. 제대로 작업이 수행되었는지 2시 이후에 결과를 확인해본다.




Posted by 겨울섬
,