리눅스 cron: Difference between revisions

From IT Wiki
No edit summary
(매일 오후 12시 정각에 실행)
 
(2 intermediate revisions by 2 users not shown)
Line 2: Line 2:


== 사용법 ==
== 사용법 ==
* 아래 명령어를 통해 에디터를 열고 원하는 규칙을 입력한다.
=== 규칙 열람 및 수정 ===
* 아래 명령을 통해 현재 입력된 배치를 확인
<pre class='shell'>
$ cron -l
</pre>
* 아래 명령어를 통해 에디터를 열고 원하는 규칙을 입력 및 수정
** vi 에디터 등을 통해 열리며, 에디터에서 저장하고 종료하면 자동 적용됨
<pre class='shell'>
<pre class='shell'>
$ cron -e
$ cron -e
</pre>
</pre>
* 규칙은 아래와 같다.
 
=== 기본 문법 ===
<pre>
<pre>
  # 분 시 일 월 요 [실행할작업]
  # 분 시 일 월 요 [실행할작업]
Line 20: Line 27:
</pre>
</pre>


* 해당사항이 있는 자리에만 숫자를 적고 나머지는 * 그대로 놔 두면 된다.
* 해당사항이 있는 자리에만 숫자를 적고 나머지는 * 그대로 표기
* 요일의 경우 일요일이 0이고 토요일이 6이다!
* 요일의 경우 일요일이 0이고 토요일이 6인 점 주의
* 아무것도 입력하지 않고 *****로 두면 매분 마다 실행된다.
* 아무것도 입력하지 않고 *****로 두면 매분 마다 실행
* 주기를 입력할 땐 / 를 쓴다. /4 라는 표현으로 4분마다, 4시간마다 등을 설정할 수 있다.
* 주기를 입력할 땐 / 를 사용
* 구간을 입력할 땐 - 를 쓴다. 4-5는 4부터 5까지라는 뜻이다.
** /4 라는 표현으로 4분마다, 4시간마다 등을 설정 가능
* 따옴표를 입력하여 여러 시간을 동시에 적을 수 있다.
* 구간을 입력할 땐 - 사용
** 4-5는 4부터 5까지라는 의미
* 따옴표를 입력하여 여러 시간을 동시에 입력 가능
* 문법이 틀릴 경우 아래와 같이 경고 메시지 출력됨
** 아래의 경우 시간(hour)부분이 잘못되었단 것으로, 시간이 입력된 부분 위주로 디버깅
<pre>
crontab: installing new crontab
"/tmp/crontab.0doyEF":1: bad hour
errors in crontab file, can't install.
Do you want to retry the same edit?
</pre>
 
=== 로깅 ===
* 기본 로그파일 확인
<pre class='shell'>
$ cat /var/log/cron
</pre>
* 각 작업마다 로그파일 지정
<pre class='shell'>
$ crontab -e
# 예시: 0 2 * * * /home/test/script.sh >> /home/test/cron.log 2>&1
[실행할 스크립트] >> [로그 위치] 2>&1
</pre>
* 2>&1의 의미에 대해선 [[리눅스 출력]] 참고


== 사용 예제 ==
== 사용 예제 ==
<pre class='shell'>
<pre class="shell">
# 매 분마다 실행
# 매 분마다 실행
/1 * * * * 실행할작업
/1 * * * * 실행할작업
Line 36: Line 66:


# 매일 오후 12시 정각에 실행
# 매일 오후 12시 정각에 실행
0 0 12 * * 실행할작업
0 12 * * * 실행할작업


# 매주 월요일 자정에 실행
# 매주 월요일 자정에 실행

Latest revision as of 13:20, 13 March 2023

특정 파일을 주기적으로 실행시킬 수 있다.

사용법[edit | edit source]

규칙 열람 및 수정[edit | edit source]

  • 아래 명령을 통해 현재 입력된 배치를 확인
$ cron -l
  • 아래 명령어를 통해 에디터를 열고 원하는 규칙을 입력 및 수정
    • vi 에디터 등을 통해 열리며, 에디터에서 저장하고 종료하면 자동 적용됨
$ cron -e

기본 문법[edit | edit source]

 # 분 시 일 월 요 [실행할작업]

 # ┌───────────── 분 (0 - 59)
 # │ ┌────────────── 시 (0 - 23)
 # │ │ ┌─────────────── 일 (1 - 31)
 # │ │ │ ┌──────────────── 월 (1 - 12)
 # │ │ │ │ ┌───────────────── 요일 (0 - 6) (0이 일요일, 6이 토요일이다.)
 # │ │ │ │ │
 # │ │ │ │ │
 # * * * * *  [실행할작업]
  • 해당사항이 있는 자리에만 숫자를 적고 나머지는 * 그대로 표기
  • 요일의 경우 일요일이 0이고 토요일이 6인 점 주의
  • 아무것도 입력하지 않고 *****로 두면 매분 마다 실행
  • 주기를 입력할 땐 / 를 사용
    • /4 라는 표현으로 4분마다, 4시간마다 등을 설정 가능
  • 구간을 입력할 땐 - 사용
    • 4-5는 4부터 5까지라는 의미
  • 따옴표를 입력하여 여러 시간을 동시에 입력 가능
  • 문법이 틀릴 경우 아래와 같이 경고 메시지 출력됨
    • 아래의 경우 시간(hour)부분이 잘못되었단 것으로, 시간이 입력된 부분 위주로 디버깅
crontab: installing new crontab
"/tmp/crontab.0doyEF":1: bad hour
errors in crontab file, can't install.
Do you want to retry the same edit?

로깅[edit | edit source]

  • 기본 로그파일 확인
$ cat /var/log/cron 
  • 각 작업마다 로그파일 지정
$ crontab -e
# 예시: 0 2 * * * /home/test/script.sh >> /home/test/cron.log 2>&1
[실행할 스크립트] >> [로그 위치] 2>&1

사용 예제[edit | edit source]

# 매 분마다 실행
/1 * * * * 실행할작업

# 매 시 정각에 실행
0 * * * * 실행할작업

# 매일 오후 12시 정각에 실행
0 12 * * * 실행할작업

# 매주 월요일 자정에 실행
0 0 * * 1 실행할작업

# 매달 1일 자정에 실행
0 0 1 * * 실행할작업

# 매시 15분, 45분에 실행
15,45 * * * * 실행할작업

# 10분마다 실행
*/10 * * * * 실행할작업

# 매일 02:00에 실행
0 2 * * * 실행할작업

# 매 6시간마다(00:30, 06:30, 12:30, 18:30) 실행
30 */6 * * * 실행할작업

# 1시부터 매 6시간마다(01:30, 07:30, 13:30, 19:30) 실행
30 1-23/6 * * * 실행할작업

# 평일(월요일~금요일) 08:00에 실행
0 8 * * 1-5 실행할작업

#주말(일요일, 토요일) 08:00에 실행
0 8 * * 0,6 실행할작업