크론(cron)
한마디로 예약작업이라고 생각하면 됩니다. 예약된 시간에 반복적인 작업을 하는 작업인데, 우리가 서버를 켜지않아도 작업한다. 즉, 리눅스에서는 터미널이 끊어져도 작업을 한다는 것이다. 터미널이 끊어져도 작업을 한다는 것은 백그라운드에서 돌아간다는 것이고 이것은 곧 데몬이라는 얘기가 된다.
크론탭(crontab)
크론(cron)작업을 하기 위한 설정 파일을 크론탭(crontab)이라고 한다. 크론(cron) 작업을 하려면 크론탭(crontab)에 설정해놓으면 작업을 수행한다.
설정 방법
명령어 : crontab -e
크론탭 파일이 열리면서 vi 에디터와 동일하게 편집할 수 있다. vi에디터는 문서작업을 하는 편집기라고 생각하면 된다.
입력을 하기 위해서는 i, a, I, A, o, O 를 누르면 입력모드로 들어가지고 esc 키를 통해 명령모드로 가지며 ':' 을 누르면 ex모드가 진행된다. ':' 버튼은 반드시 명령모드에 입력해야하고 :q는 나가기 :q! 저장하지않고 종료 :wq 저장하고 종료하기 이다. vi에 대한 설명은 나중에 적을테니 우선 이정도만 알고 있도록 한다.
명령어 : crontab -l
명령어 crontab -e를 하여 입력한 내용을 보여주기만 한다. -e는 편집기가 열리면서 적는 것까지 가능하지만, -l 옵션은 화면에 보여주기만 한다. 간단하게 크론탭(crontab)에 적힌 내용만 보고싶다고 하면 -l 옵션을 쓰는 것이 좋다.
입력 방법
crontab -e 명령어를 통해 에디터로 열렸다면 이제 몇시에 작업할 것인지 설정하여야한다. 그 방법을 알아보자~
* * * * * ls -al |
* | * | * | * | * | root | ls -al |
분 | 시 | 일 | 월 | 요일 | 사용자 (생략가능) |
명령어 |
시의 표기법은 0~23시까지 사용한다.
요일의 표기법은 0~6까지 사용한다. 0 = 일, 1 = 월. 2 = 화, 3 = 수, 4 = 목, 5 = 금, 6 = 토
예를 들어 30 11 * * * ls
라고 한다면 11시 30분에 ls 명령어를 실행한다 라는 뜻이다.
또 다른 예로 * 3 * * * ls
라고 하면 새벽 3시에 ls 명령어를 실행한다 라는 뜻이다.
쓰임새
크론(cron)작업은 예약작업이라고 앞서 설명하였다. 이는 반복적인 작업을 수행할 때가 빛나는 작업이다. 따라서 그 시간에 항상하는 작업을 크론탭(crontab)에 설정해놓는다.
첫번째로는 배치작업이 있다. 일괄작업으로 주기적으로 해야하는 이 작업은 크론(cron)작업이 유용하다. 배치작업에 대해 더 자세한 설명은 밑에 링크를 참고하면 된다.
배치작업 참고 : limkydev.tistory.com/140
두번째로는 백업작업이 있다. 백업은 항상해야되는 일이다. 언제 서버 혹은 컴퓨터가 사망할지 모르기 때문에 백업은 필수이다. 따라서 내가 한번 크론탭(crontab)에 적용해 놓으면 따로 항상 귀찮게 백업할 필요가 없고, 나중에 파일을 없애더라도 복구가 가능할 것이다.
리눅스마스터 2급 문제
다음 중 백업스크립트가 30분 주기로 실행되도록 crontab에 설정하는 내용으로 알맞은 것은? (20년도 3회차)
1. */30 * * * * /etc/backup.sh 2. * */30 * * * /etc/backup.sh 3. * * */30 * * /etc/backup.sh 4. * * * */30 * /etc/backup.sh |
=> 주기로 나눌때 쓰는 '/' 를 30으로 나누는데 분을 나누어야한다. 분의 위치는?? 맨 앞이다. 즉 1번이 정답이다.
다음 중 cron에 관한 설명으로 알맞은 것은? (20년도 2회차)
1. cron은 root 권한으로만 수행 가능하다. 2. crontab 파일은 총 5개의 필드로 구성되어 있다. 3. 주기적으로 실행하는 작업만 등록하여 사용할 수 있다. 4. 시스템 운영에 필요한 작업은 /var/crontab 파일에 관련 정보가 저장된다. |
=> 주기적인 실행을 위해 작성하기 떄문에 3번이 정답이다.
cron은 root 권한이 아니라 계정별로 작업이 가능하다.
crontab은 /etc/crontab 파일에 관련 정보가 저장된다.
7개의 필드로 이루어져있다.
* * * * * root ls -al
분. 시간. 일. 월. 요일. 사용자. 명령어
(사용자는 생략가능하고, 명령어를 필드로 생각하지 못하여 헷갈릴 수 있다)
다음 조건으로 cron을 이용해서 일정을 등록할 때 알맞은 것은? (20년도 2회차)
매시 30분에 백업 스크립트인 /etc/backup.sh가 실행 되도록 설정한다. 1. 30 * * * * /etc/backup.sh 2. */30 * * * * /etc/backup.sh 3. * 30 * * * /etc/backup.s 4. * */30 * * * /etc/backup.sh |
=> 매시 30분이다. 30분을 주기로 한다는 뜻인데, 주기를 쓸 때 사용하는 '/'를 분의 위치에 쓰면된다. 맨 앞이 분의 위치이고 /30 의 주기를 주는 1번이 정답이다.
다음 조건으로 cron을 이용해서 일정을 등록할 때 알맞은 것은? (19년도 4회차)
매주 월요일과 목요일 오전 10시에 점검 스크립트인 /etc/check.sh가 실행되도록 설정한다. 1. 10 0 1-4 * * /etc/check.sh 2. 0 10 1,4 * * /etc/check.s 3. 10 0 * * 1-4 /etc/check.sh 4. 0 10 * * 1,4 /etc/check.sh |
=> 시의 위치에 10이 들어가야하고 요일의 위치에 월과 목요일을 넣어야한다.
시의 위치는 앞에서 2번째, 요일의 위치는 앞에서 5번째에 위치한다. 월요일 에서 목요일 이라면 1-4를 쓰겠지만, 월요일과 목요일만 작업하기 때문에 1,4 가 되어야한다. 정답은 4번이다.
다음 설명을 수행하기 위한 명령으로 알맞은 것은? (19년도 4회차)
저장된 crontab 설정 파일을 삭제하기 전에 사용자에게 확인한다. 1. crontab -ir 2. crontab -id 3. crontab -q -r 4. crontab -q -d |
=> 잘 나오지 않는 옵션이라 외워버렸다. 삭제하기 전에 사용자에게 확인하는 옵션은 -ir 이다.
참고 : jdm.kr/blog/2
'LINUX > 리눅스마스터 2급' 카테고리의 다른 글
[리눅스마스터 2급] 소유권(chown, chgrp) (0) | 2020.10.04 |
---|