특정한 시간이나 특정 시간 마다 어떤 작업을 자동으로 수행하고 싶을때 사용하는 명령어가 Cron이다. Cron은 특정 시간에 특정 작업을 수행하는 스케줄링 역할을 한다.
Cron은 리눅스에만 있는 개념은 아니다.
작업을 하다보면 본인이 직접 매번 체크하고 해줘야 하는 작업을 자동화해줘야 할 때가 있다. 예를 들어 주기적으로 백업을 해야되거나, 어떤 것을 초기화해줘야 하는 작업을 수행, 또는 전송 작업을 수행해야 할 경우 Cron을 활용하면 특정 시간에 주기적으로 이러한 작업을 사용자없이 자동으로 수행할 수 있다.
Cron은 데몬 프로세스에서 동작한다.
데몬 프로세스: 데몬 프로세스는 컴퓨터 운영체제에서 백그라운드에서 실행되는 프로그램이다. 이러한 프로세스는 사용자가 직접적으로 제어하거나 실행시키는 것이 아니라, 시스템이 부팅될 때 자동으로 시작되어 항상 메모리에 상주하며 서비스를 제공하거나 특정 작업을 수행한다.
데몬의 유래: 컴퓨터 운영체제에서 '데몬 프로세스'라는 용어는 이러한 고대 그리스 신화에서 영감을 받아, 백그라운드 동작이 컴퓨터 시스템 내에서 중간 매개체와 같은 역할을 하기 때문에 붙여진 이름이다.
동작을 위한 스크립트를 작성한다. 다음은 스왚 메모리 초기화 명령어이다.
swapoff -a && swapon -a
이를 root/batch/init_swap_memory.sh에 저장하자.
그 다음 리눅스 명령어에서 사용가능하게 퍼미션을 설정해주면 준비가 끝난다.
chmod +x /root/batch/init_swap_memory.sh
crontab -e를 누르면 다음과 같은 창이 뜬다.
그리고 script를 실행하기 위한 구문을 아래에 작성하면 된다.
* * * * * * hello.sh
분 시 일 월 연도 요일 스크립트파일 순으로 입력해준다.
*은 매번이라는 뜻..
시간 부분에서 */3이면 */3 == 0일때 동작하게 해주세요
라는 의미이다.
분의 경우 0 ~ 59
시간 0 ~ 23
일 1 ~ 31
월 1 ~ 12
연도
요일 0(일요일) ~ 6(토요일)
예를 들어 위에 사진에 cron 명령어 의미는 매 4시간마다 /root/batch/init_swap_memory.sh 스크립트를 실행해주세요. 라는 의미이다.
좋은 글 감사합니다.