정처기를 공부하면서 cron에 대해 알고있다생각했는데 실제로 실무에서 사용하려니 내가 부족하다는 것을 알게되었다..!
(crontab 스크립트를 에디터로 열어서 편집해놓고 왜 실행이 안되는거지,,?하며 당황했었다.)
역시 아는것과 실제로 경험해보는것은 다르구나!
이것도 정리해서 내것으로 만들어야겠다.
cron
Cron
Linux, Unix 운영체제에서 어떤 작업을 특정 시간에 실행시키기 위한 데몬이다.
일정한 시간 간격으로 수행되어야 할 작업 또는 사용자가 해당 시간에 작업을 할 수 없는 상황에서, 서버는 항상 돌아가고 있다는 점을 이용하는 방법이다.
Crontab
Cron작업을 설정하는 파일이다.
각각의 ID 별로 수행되어야 할 작업이 하나의 파일에 저장된다.
Cronjob
Linux, Unix 기반에서 작업의 스케줄을 지정할 수 있는 스크립트이다.
crontab 명령
- crontab -e : 크론탭 설정을 할 수 있는 에디터 화면이 출력된다. vi에디터처럼 ':wq'를 입력해 변경사항을 저장한다.
- crontab -l : 에디터 화면을 열지 않고 현재 크론탭의 작업 목록을 확인한다. cat 명령어로 화면을 출력하는 것과 동일하다.
- crontab -r : 설정되어있는 크론탭 작업들을 모두 지운다.
crontab 작업
crontab 스크립트 작성밥법
* * * * * 실행할 명령
# * * * * * 실행할 명령
# 분(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)
https://hyunalee.tistory.com/35
'OS > Unix' 카테고리의 다른 글
[UNIX] 네트워크 연결 확인 - netstat / + port,socket (0) | 2023.02.11 |
---|---|
[UNIX] 디스크 용량 확인 - df, du (0) | 2023.02.11 |
[UNIX] grep, find (1) | 2022.12.11 |