어떠한 작업을 일정주기로 반복적으로 수행하게 해준다.
/usr/local/test.sh 라는 쉘파일이 있고 그걸 수행시킨다고 가정하고 정리한다.
현재 등록되어 있는 crontab 을 확인하려면?
crontab -l
crontab 을 등록하려면?
아래와 같이 입력하면 수행할 명령을 입력할 수 있는 편집기가 호출된다.
crontab -e
만약 수행할 작업이 root 권한이 필요한 작업이라면?
sudo crontab -e
편집기를 반드시 vim으로 띄우고 싶다면?
sudo EDITOR=vim crontab -e
만약 매시 30분 마다 test.sh 라는 쉘을 실행시키고 싶다면 아래와 같이 입력하고 저장하면 된다.
/usr/local 이 PATH에 등록되어 있다면 그냥 test.sh 로 호출해도 된다.
30 * * * * /usr/local/test.sh
스케줄은 어떻게 설정?
* * * * * 1분 마다 실행
30 * * * * 매시 30분마다 실행
0 0 10 * * 매월 10일 0시 0분에 실행
* * 10 * * 매월 10일에 1분 마다 실행
0 0 10 4 * 매년 4월 10일에 0시 0분에 실행
0 0 * * 1 매주 월요일 0시 0분에 실행 (요일의 숫자표현: 일0 월1 화2 수3 목4 금5 토6)
0 * * * 1 매주 월요일 매시 0분에 실행
로그를 남기고 싶다면?
수행여부 자체는 시스템로그에 남는다. (Ubuntu 기준 /var/log/syslog)
하지만 실제 작업이 수행되면서 발생시키는 출력은 따로 기록을 해줘야 한다.
아래와 같이 하면 매일마다 그 날짜에 맞는 /log/crontab_log_20200402 라는 파일이 생성되고
그곳에 로그가 기록된다.
/usr/local/test.sh >> ~/log/crontab_log_`date +\%Y\%m\%d`.log
로그를 남기고 싶지 않다면?
아래와 같이 하라고들 하는데 이게 무슨 의미가 있나 싶기는하다..
어차피 /usr/local/test.sh 뒤에 아무것도 입력하지 않으면 기본적으로 로그는 남지 않고
아래와 같이 하더라도 syslog 는 남는 것 같다.
/usr/local/test.sh > /dev/null 2>&1
2>&1 의 의미는 아래 블로그를 참고하자.
https://jybaek.tistory.com/115
crontab 에 대한 syslog 를 남기고 싶지 않다면?
/etc/rsyslog.d/50-default.conf 파일을 열어서
*.*;auth,authpriv.none -/var/log/syslog 내용을 아래로 바꿔준다.
*.*;auth,authpriv.none,cron.none -/var/log/syslog
그리고 데몬 재시작 service rsyslog restart
crontab 작업을 확인하거나 삭제하고 싶다면?
crontab -e 으로 들어가서 확인하면 되고
삭제는 명령줄을 #으로 주석처리 하거나 아예 삭제해버리면 된다.
'Base > OS, Network' 카테고리의 다른 글
Linux crontab (0) | 2021.04.16 |
---|---|
운영체제 (0) | 2021.04.02 |
CPU 스케줄링 (0) | 2021.04.02 |
L4, L7 스위치 정리 (0) | 2021.04.02 |
ssh-keygen (0) | 2021.04.02 |