2022-06-28 Cron_실행

2022. 6. 28. 19:56BE/Linux

 

이 글은 목소리가 감미로우신 이고잉님의 오픈튜토리얼 리눅스 강의를 듣고 정리한 내용입니다.


Cron

 

출처 : https://terms.naver.com/entry.naver?docId=4125592&categoryId=59321&cid=59321

 

cron은 백업과 같이 주기적으로 실행하는 명령들을 정해진 시간에 자동으로 실행해 주는 도구다.

 

문법은 아래와 같다.

crontab [ -u 사용자ID ] 파일, crontab [ -u 사용자ID ] { -l | -r | -e }
  • l : 현재 crontab 내용을 표준출력한다. List user’s crontab.
  • r : 현재 crontab 내용을 지운다. Delete user’s crontab.
  • e : .crontab 파일의 내용을 편집한다. Edit user’s crontab. (편집기는 VISUAL이나 EDITOR 환경 변수의 편집기를 사용)

 

crontab -e

해당 명령어를 입력하면 에디터로 이동.

 

여기에 주기적으로 실행할 명령어를 입력하면 된다.

 

# m h dom mon dow 
#분 시 일 월 요일 (minute, hour, day of month, month, day of week)
 # ┌───────────── min (0 - 59)
 # │ ┌────────────── hour (0 - 23)
 # │ │ ┌─────────────── day of month (1 - 31)
 # │ │ │ ┌──────────────── month (1 - 12)
 # │ │ │ │ ┌───────────────── day of week (0 - 6) (0 to 6 are Sunday to Saturday, or use names; 7 is Sunday, the same as 0)
 # │ │ │ │ │
 # │ │ │ │ │
 # * * * * *  command to execute
10 * * * * date >> date.log #매시간 10분에 한번

* * * * * date >> date.log #매분 실행

1/* * * * * date >> date.log #매분에 1번

출처 : https://ko.wikipedia.org/wiki/Cron

date > date.log
cat date.log

date >> date.log
cat date.log

별도의 주소를 지정하지 않고 date.log로만 입력하면 홈디렉터리 아래에 date.log 파일이 생성된다.

 

실시간으로 date.log을 관찰하기 위해서는 아래의 명령어를 사용한다.

 

tail -f ~/date.log

tail -f 많이 사용하다고 한다.

 

명령어를 종료하고 싶다면 ctrl+d를 입력한다.

 

* * * * * date >> date.log 2>&1

이렇게 작성하면 에러가 발생한 경우에 에러 메시지가 표준 출력으로 리다이렉션 되어 같이 저장된다.

 

2>&1에서 >& 사이에 띄어쓰면 안 된다. (parse error near `&')

 

&를 인식하는 것에 문제가 발생하는 것 같다.

 

❯ cat error.txt 1> test.txt 2>&1

❯ cat test.txt
cat: error.txt: No such file or directory

의도적으로 에러를 발생시켜서 확인해보았다.

 

그냥 2>&1는 하나의 구문으로 암기하자.

 


굳이 따지자면 deamon은 시도 때도 없이 돌아가는 프로그램이고, cron은 시도 때도 있이 돌아가는 프로그램 정도 되겠다.