본문 바로가기
Linux

[Linux] cron and crontab

by ds31x 2024. 6. 27.

cron 은 UNIX 계열 운영체제에서 주기적으로 작업을 실행할 수 있게 해주는 데몬 프로그램임.

  • 주기적으로 실행할 명령어와 스크립트를 설정할 수 있음.
  • 주기적으로 수행할 예약 작업을 설정하여 실행케 해줌.

croncrontab 에 기재된 실행할 작업 스케쥴을 수행한다.

  • crontabcron 데몬이 읽고 실행할 작업 스케쥴을 정의한 파일
  • 해당 파일을 관리하는 명령어를 가르킴.

가장 대표적인 crontab 파일이 바로 /etc/crontab 파일로서 관리자만이 편집가능함.
해당 파일을 직접 수정하는 것으로 cron이 수행할 작업을 지정할 수 있으나,
일반적으로는 crontab -e 를 통해 수행함.


 

아래는 crontab의 사용법을 정리한 내용임.

1. crontab 파일 열기

crontab 명령어를 사용하여 현재 사용자의 crontab 파일을 편집 할 수 있음.

crontab -e
  • 이는 /etc/crontab 에도 반영이 됨: 해당 사용자 id도 같이 기재됨.

참고

  • Environment variables에 EDITOR를 설정하지 않은 경우엔 어떤 에디터를 쓸지를 물어본다.
  • vi를 권하나, 초보자라면 nano를 사용할 것.

https://dsaint31.tistory.com/444

 

[Linux] Nano Editor 간단 사용법

주로 vi만 사용하기 때문에 Nano는 그닥... 문제는 다른 사람 장비에서 간단한 일을 할 때, vi가 없는 경우가 있고, editor 지정을 vi로 바꾸며 원래 주인이 답답해하는 경우가 발생한다. (그렇다고 매

dsaint31.tistory.com

https://dsaint31.tistory.com/473

 

[Linux] vi (or vim) 사용법 정리

vi (or vim) 사용법 정리 더보기관련자료.https://ds31x.tistory.com/174 [CE] Text file : Text 파일이란?"text file" 은 사람과 컴퓨터가 읽을 수 있고 처리할 수 있도록 encoding 된 characters 로 이루어진 electric text li

dsaint31.tistory.com


2. crontab 파일 형식

crontab 파일에는 다음과 같은 형식으로

  • 주기
  • 명령어를 지정함.
* * * * * 명령어

각각의 필드 * 는 다음을 의미함:

  • 첫 번째 필드: 분 (0 - 59), m (minute)
  • 두 번째 필드: 시간 (0 - 23), h (hour)
  • 세 번째 필드: 일 (1 - 31), dom (day of month)
  • 네 번째 필드: 월 (1 - 12), mon (month)
  • 다섯 번째 필드: 요일 (0 - 7) (0과 7 은 일요일을 의미함), dow (day of week)
참고로 /etc/crontab 에 직접 기재하는 경우,
명령어 앞에 사용자 column이 존재함.

 

예를 들어, 매일 오후 2시 30분에 실행되는 명령어를 설정하려면 다음과 같이 작성함:

30 14 * * * /path/to/command

3. 특수 문자

각 필드에서 사용가능한 특수 문자는 다음과 같음.

  • *: 모든 값을 의미함
  • ,: 여러 값을 구분함 (예: 1,2,3은 1, 2, 3일에 실행됨)
  • -: 범위를 지정함 (예: 1-5는 1일부터 5일까지 실행됨)
  • /: 간격을 지정함 (예: */2는 2분마다 실행됨)

예를 들어, 매 시간 0분과 30분에 실행되는 명령어를 설정하려면 다음과 같이 작성함:

0,30 * * * * /path/to/command

4. Examples

다음 예에서 명령어들은 해당 경로로 직접 작성한 shell을 의미한다.

 

  • 매일 오전 6시에 백업 스크립트를 실행함:
    0 6 * * * /path/to/backup.sh

 

  • 매주 월요일 오전 7시 정각에 로그 정리를 실행함:
    0 7 * * 1 /path/to/log_cleanup.sh

 

  • 매월 1일 자정에 데이터베이스 백업을 실행함:
    0 0 1 * * /path/to/db_backup.sh

5. crontab 확인 및 삭제

현재 사용자의 crontab 파일을 확인하려면 다음 명령어를 사용함:

crontab -l

 

현재 사용자의 crontab 파일을 삭제하려면 다음 명령어를 사용함:

crontab -r

6. 로그 확인

cron 작업이 정상적으로 실행되었는지 확인하려면 시스템 로그 파일을 확인 해야 함.
일반적으로

  • /var/log/cron 또는
  • /var/log/syslog 파일에 기록됨.

7. 환경 변수

crontab에서 사용할 환경 변수를 설정할 수 있음.

예를 들어, PATH를 설정하려면 crontab 파일의 맨 위에 다음과 같이 추가함:

PATH=/usr/local/bin:/usr/bin:/bin

 

2023.06.20 - [개발환경] - [Env] Environment Variable (환경변수)

 

[Env] Environment Variable (환경변수)

정의 Environment variable (환경변수) 란, OS나 SW에서 참조하는 변수들로 OS나 SW가 동작 (or 실행)에 영향을 주는 값을 가짐. shell script 나 software들이 각 장비의 환경에 맞게 동작할 수 있도록 해 줌. 종

ds31x.tistory.com

2024.01.29 - [Linux] - [zsh] 환경변수 사용하기: Referencing Environment Variable

 

[zsh] 환경변수 사용하기: Referencing Environment Variable

다음과 같은 shell script 는 source test.zsh 를 zsh의 설정파일 .zshrc의 마지막에 추가해줌. echo "source test.zsh" >> ${ZDOTDIR:-$HOME}/.zshrc 여기서 ${환경변수} 는 환경변수 의 이름의 environment variable의 값으로 대

ds31x.tistory.com

 

'Linux' 카테고리의 다른 글

[linux] find 사용법.  (0) 2024.05.11
[linux] example: sed: -r or -E  (0) 2024.05.11
[linux] example: sed: -f option  (0) 2024.05.11
[linux] example: sed: -e option  (0) 2024.05.11
[linux] example: sed: -n option  (0) 2024.05.11