본문 바로가기

OS/Unix

[UNIX] crontab 스캐줄러

정처기를 공부하면서 cron에 대해 알고있다생각했는데 실제로 실무에서 사용하려니 내가 부족하다는 것을 알게되었다..!

(crontab 스크립트를 에디터로 열어서 편집해놓고 왜 실행이 안되는거지,,?하며 당황했었다.)

역시 아는것과 실제로 경험해보는것은 다르구나! 

이것도 정리해서 내것으로 만들어야겠다. 

 

 

cron

 

Cron

Linux, Unix 운영체제에서 어떤 작업을 특정 시간에 실행시키기 위한 데몬이다.

일정한 시간 간격으로 수행되어야 할 작업 또는 사용자가 해당  시간에 작업을 할 수 없는 상황에서, 서버는 항상 돌아가고 있다는 점을 이용하는 방법이다. 

Crontab

Cron작업을 설정하는 파일이다.

각각의 ID 별로 수행되어야 할 작업이 하나의 파일에 저장된다. 

Cronjob

Linux, Unix 기반에서 작업의 스케줄을 지정할 수 있는 스크립트이다.

 

crontab 명령

  • crontab -e :  크론탭 설정을 할 수 있는 에디터 화면이 출력된다. vi에디터처럼 ':wq'를 입력해 변경사항을 저장한다.
  • crontab -l  : 에디터 화면을 열지 않고 현재 크론탭의 작업 목록을 확인한다. cat 명령어로 화면을 출력하는 것과 동일하다.
  • crontab -r : 설정되어있는 크론탭 작업들을 모두 지운다. 

 

crontab 작업

 

crontab 스크립트 작성밥법

이미지출처 : https://prasad-k-pawar.medium.com/get-started-with-cron-jobs-linux-617a1c5cc26a

 

* * * * * 실행할 명령

# *        *       *       *        *   실행할 명령
# 분(0-59) 시(0-23) 일(1-31) 월(1-12) 요일(0-7):일요일~토요일
  • 앞에 있는 *들은 각각 분, 시, 일, 월, 요일을 나타내여 주기를 지정할 수 있다. 
  • 그다음에 지정한 주기마다 실행할 명령어 또는 스크립트가 온다.  

- 사용예시

 

# 매 분 /home/test.sh 실행
* * * * * /home/test.sh

# 수요일 2시 정각마다 /home/test.sh 실행
0 2 * * 3 /home/test.sh

# 매일 3시30분, 15시30분마다 /home/test.sh 실행
30 3,15 * * * /home/test.sh

# 매 20분마다 /home/test.sh 실행
*/20 * * * * /home/test.sh

#매 월 초 13시 0분부터30분까지 /home/test.sh 실행
*-30 13 1 * * /home/test.sh

 

 

crontab 작업 로깅

 

* * * * * /home/test.sh > /home/test.sh.log 2> home>test.sh.err

 

위 스크립트는 test.sh 스크립트를 실행하면서 표준출력으로 출력되는 내용은 test.sh.log에 기록하고 표준에러로 출력되는 내용은 test.sh.err에 기록하라고 지정한 것이다. 

 

 

* * * * * /home/test.sh >> /home/test.sh.log 2>&1

 

위 스크립는 표준출력과 표준에러를 test.sh.log에 기록하라고 지정한 것이다. 

기존 파일에 출력 내용을 append를 한다. 

 

 

0 0 * * * crontab -l > /home/crontab.bak

 

매일 자정에 크론탭 작업을 crontab.bak 파일로 백업한다.

기존 파일에 append를 하는 게 아닌, 항상 새로운 파일을 생성한다. 

 

 

 

 

 


 

[Linux] crontab 명령어 사용법 - cron 작업 생성 및 관리 (tistory.com)

 

[Linux] crontab 명령어 사용법 - cron 작업 생성 및 관리

crontab 명령은 리눅스에서 특정 작업을 주기적으로 실행하기 위해서 사용한다. crontab을 일종의 작업 스케쥴러로 "매일 1시에 이 작업을 실행하라” 혹은 “10분마다 이 스크립트를 실행하라” 같

hbase.tistory.com

https://hyunalee.tistory.com/35

 

[Unix] cron crontab

CronCron은 Linux, unix 운영체제에서 어떤 작업을 특정 시간에 실행시키기 위한 데몬이다. 예를 들어 하루에 한차례 특정 서버에 접속해서 데이터를 받아와야 한다든지, 아니면 새벽 3시에 특정 작업

hyunalee.tistory.com

 

'OS > Unix' 카테고리의 다른 글

[UNIX] 네트워크 연결 확인 - netstat / + port,socket  (0) 2023.02.11
[UNIX] 디스크 용량 확인 - df, du  (0) 2023.02.11
[UNIX] grep, find  (1) 2022.12.11