# crontab

- Author: @mildsalmon
- Published: 2020-02-26
- Updated: 2020-02-27
- Source: http://blex.me/@mildsalmon/crontab
- Tags: document, linux, crond, crontab

---

# Intro

Crontab 은 특정 시간에 특정 작업을 해주는 리눅스 스케줄러이다.

# 주요 명령어 (options)

### -u

```
crontab -u
```

> define user

> user 사용자에 대해서 크론탭을 수행한다. 생략하면 크론탭 명령을 실행하는 사용자에 대해서 크론탭 수행

### -e

```
crontab -e
```

> edit user's crontab

> VIM을 사용하여 크론탭을 편집한다.

##### 수정 후 할일

```
service crond stop
service crond start
```

크론을 재시작 해줘야한다.<br>
restart는 사용이 안되는듯하다.<br>
정상적으로 재시작이 되었는지 확인하기 위해서는 `service crond status`로 확인하면 된다.<br>
Active : active (running) ~~ 이렇게 뜰꺼임<br>

### -l

```
crontab -l
```

> list user's crontab

> cat 명령어 처럼 크론탭에 저장된 명령어(작업목록)를 출력한다.

### -r

```
crontab -r
```

> delete user's crontab

> 크론탭의 내용을 모두 삭제한다.


# 등록 형식

\* \* \* \* \*  수행할 명령어<br>
┬ ┬ ┬ ┬ ┬<br>
│ │ │ │ │<br>
│ │ │ │ │<br>
│ │ │ │ └───────── 요일 (0 - 6) (0:일요일, 1:월요일, 2:화요일, …, 6:토요일)<br>
│ │ │ └───────── 월 (1 - 12)<br>
│ │ └───────── 일 (1 - 31)<br>
│ └───────── 시 (0 - 23)<br>
└───────── 분 (0 - 59)<br>
<br>
### 예시

##### 매 1분마다 작업 수행

```
* * * * * /Hi/Hi.sh
```

> 1, 2, 3, 4, 5 ...

##### 매시 15분, 45분에 작업 수행

```
15,45 * * * * /Hi/Hi.sh
```

> 00:15, 00:45, 01:15, 01:45 ...

##### 10분마다 작업 수행

```
*/10 * * * * /Hi/Hi.sh
```

> 10, 20, 30, 40 ...

##### 매일 2:00에 작업 수행

```
0 2 * * * /Hi/Hi.sh
```

> 2:00, 2:00

##### 매 6시간마다 작업 수행

```
30 */6 * * * /Hi/Hi.sh
```

> 00:30, 6:30, 12:30 ...

##### 1시부터 매 6시간마다 작업 수행

```
30 1-23/6 * * * /Hi/Hi.sh
```

> 1:30, 7:30, 13:30 ...

##### 월-금요일 8:00에 작업 실행

```
0 8 * * 1-5 /Hi/Hi.sh
```

> 월 08:00, 화 08:00 ...

##### 주말 08:00에 작업 실행

```
0 8 * * 0,6 /Hi/Hi.sh
```

> 토 08:00, 일 08:00 ...

# 로그

### 작업 명령 등록시

```
crontab -e
```

위 명령어로 크론탭 편집에 들어간다.

```
*/10 * * * * /Hi/Hi.sh > /Hi/Hi.log 2>&1
*/10 * * * * /Hi/Hi.sh >> /Hi/Hi.log 2>&1
```

이렇게 하면 Hi.sh 파일 실행의 출력 내용과 에러가 담긴다.<br>
`>` 이 화살표가 한개면 파일을 실행 시킬때마다 log를 새로 작성한다.<br>
`>>` 이렇게 두개면 이전 내용 다음에 이어서 작성된다.<br>

![](https://static.blex.me/images/content/2020/2/26/A2HEYCmUtHqrB3hLg4wa.png)

##### /dev/null 2>&1

`/dev/null 2>&1`
명령어 처리결과 그리고 발생할지 모르는 에러메세지를 출력하지 않고 모두 다 버린다는 의미이다.

2 : 표준 에러<br>
> : 리다이렉트<br>
&1 : 표준 출력<br>

즉 `/dev/null 2>&1`은 표준 에러가 발생하면 /dev/null에다 리다이렉트로 표준 출력해라.<br>

고로. 에러를 보고 싶으면 /dev/null 대신에 /Hi/Hi.log 처럼 파일명을 적어주면 된다.<br>

### 기본 로그

```
vim /var/log/cron
```

![](https://static.blex.me/images/content/2020/2/26/zjsyAgOues4MXThnUF9w.png)

# 주의사항

크론탭에 입력하는 작업 명령은 꼭 한줄로 작성해야한다.

# 참고문헌

> 리눅스 크론탭(Linux Crontab) 사용법, "https://jdm.kr/blog/2", [JDM's Blog]
>
> 리눅스 cron - 작업 예약 명령, "https://webdir.tistory.com/174", [WEBDIR]
>
> 리눅스 반복 예약작업 cron, crond, crontab, "https://zetawiki.com/wiki/%EB%A6%AC%EB%88%85%EC%8A%A4_%EB%B0%98%EB%B3%B5_%EC%98%88%EC%95%BD%EC%9E%91%EC%97%85_cron,_crond,_crontab", [ZETAWIKI]
>
> [Linux] crontab 사용법, "https://includestdio.tistory.com/31", [includestdio]
>
> Crontab 설정 및 로그 - 스케줄링하기, "https://ourcstory.tistory.com/63", 불로
>
> cron(crontab) 실행 로그 남기기2, "https://blog.work6.kr/321", [WORK6]
>
> crontab 사용법 및 log, "https://loveroid.tistory.com/57", [sgawn james]
>
> [Linux] 쉘스크립트 crontab 동작시 /dev/null 2>&1 효과, "http://blog.daum.net/_blog/BlogTypeView.do?blogid=04kqb&articleno=15418625&categoryId=736857&regdt=20171113114402", [삽돌이]
