차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

양쪽 이전 판이전 판
다음 판
이전 판
tech:crontab [2016/01/09 09:40] 192.168.0.1tech:crontab [2024/07/08 00:40] (현재) V_L
줄 1: 줄 1:
 +{{tag>crontab linux 우분투}}
  ======Crontab (Linux)======  ======Crontab (Linux)======
 cron(크론)은 원하는 시간에 명령(프로그램)을 시키기 위한 데몬이다. cron(크론)은 원하는 시간에 명령(프로그램)을 시키기 위한 데몬이다.
줄 6: 줄 7:
   - 또는 30분간격으로 HDD의 사용량을 운영자에게 알리도록 해야한다면?   - 또는 30분간격으로 HDD의 사용량을 운영자에게 알리도록 해야한다면?
   - 매월 초에 자료를 백업 받고 싶다면?   - 매월 초에 자료를 백업 받고 싶다면?
- 
  
   crontab -l              # 현재 crontab에 등록된 작업보기   crontab -l              # 현재 crontab에 등록된 작업보기
- 
- 
  
   crontab -e              # crontab 편집하기   crontab -e              # crontab 편집하기
- 
- 
  
 시간 설정에서 몇가지 의미있는 것들을 알아보자. 시간 설정에서 몇가지 의미있는 것들을 알아보자.
줄 23: 줄 19:
   * 2-10/3와 같이 하이픈(-)으로 시간 범위를 슬래쉬(/)로 시간 간격을 지정할 수 있다. (2~10까지 3간격으로. 즉, 3,6,9를 의미함)   * 2-10/3와 같이 하이픈(-)으로 시간 범위를 슬래쉬(/)로 시간 간격을 지정할 수 있다. (2~10까지 3간격으로. 즉, 3,6,9를 의미함)
  
-=====예=====+  분 시 일 월 주  실행할 내용 
 +형식이다.
  
 +밑의 예제를 참고하고 원하는 설정 알려주시는 갓양님 사이트 [[https://crontab.guru/]]  를 해보자.
 +
 +=====예=====
  
   매주 토요일 새벽 2:20    매주 토요일 새벽 2:20 
   20 2 * * 6 명령어   20 2 * * 6 명령어
  
-  매일 오후 4,5,6시 +  매일 새벽 4시 1분 
 +  1 4 * * * 명령어 
 + 
 +  매월 1일 새벽 1시 15분 
 +  15 1 1 * * 명령어 
 + 
 +  매일 오전 4,5,6시 
   0 4-6 * * * 명령어   0 4-6 * * * 명령어
  
   매일 2시간간격으로 5분대에    매일 2시간간격으로 5분대에 
   5 */2 * * * 명령어   5 */2 * * * 명령어
- 
-  매월 1일 새벽 1:15  
-  15 1 1 * * 명령어 
  
   1,7월 1일 새벽 0:30    1,7월 1일 새벽 0:30 
   30 0 1 1,7 * 명령어   30 0 1 1,7 * 명령어
 +
 +  # save every 3 min
 +  */3 * * * * /home/mine/bin/mc1 save
 +
 +  # restart at 11:55am & 11:55pm
 +  55 11,23 * * * /home/mine/bin/mc1 restart
 +
 +  #2개월마다 3일 3시 33분
 +  33 3 3 */2 * /opt/letsencrypt/certbot-auto renew
 +
 +====정기적으로 PHP 실행====
 +
 +   52 *  * * * wget -p --spider http://openwiki.kr/bb/rssboard.cron.php
 +매시각 52분에 원격의 php 파일을 실행함.
  
 =====로그===== =====로그=====
줄 46: 줄 63:
   명령어 뒤에 >> /home/user/crontab.log   명령어 뒤에 >> /home/user/crontab.log
  
- + 우분투 서버버전에서 crontab 사용해보려고 했는데 /var/log 에 crontab 로그파일이 남겨져 있지 않아서 왜 그런지 찾아보니 기본설정이 로그가 남겨지지 않도록 되어있었다. 다음과 같이 로그 관련 데몬 설정 파일을 수정하고 데몬을 재시작 시켜 주면 다.
- 우분투 서버버전에서 crontab 사용해보려고 했는데 /var/log 에 crontab 로그파일이 남겨져 있지 않아서 왜 그런지 찾아보니 기본설정이 로그가 남겨지지 않도록 되어있었습니다. 다음과 같이 로그 관련 데몬 설정 파일을 수정하고 데몬을 재시작 시켜 주면 됩니다.+
  
   sudo vi /etc/syslog.conf   sudo vi /etc/syslog.conf
  
-파일 열어서 crontab 찾아서 코멘트 되어 있는 부분 풀어줍니다.+파일 열어서 crontab 찾아서 코멘트 되어 있는 부분 풀어다.
  
 =====기타===== =====기타=====
- 
- 
-   52 *  * * * wget -p --spider http://vaslor.net/bb/rssboard.cron.php 
-매시각 52분에 원격의 php 파일을 실행합니다. 
  
 ==== cron 설정파일 저장위치==== ==== cron 설정파일 저장위치====
줄 64: 줄 76:
  
 여기 들어가면 각 유저별(유저명) cron 설정파일이 들어있다. 직접 변경하려면 Root 권한 필요. 여기 들어가면 각 유저별(유저명) cron 설정파일이 들어있다. 직접 변경하려면 Root 권한 필요.
- 
  
 ==== 필요없는 이메일 알림 없애기==== ==== 필요없는 이메일 알림 없애기====
  
-명령을 수행하고 나서 결과를 이메일로 보내려는 시도를 하는데, 귀찮습니다.+명령을 수행하고 나서 결과를 이메일로 보내려는 시도를 하는데, 귀찮다. 
 + 
 +각 명령어의 끝에 '' > /dev/null '' 를 붙임. 
 + 
 +혹은
  
-각 명령어의 끝에 '' /dev/null '' 를 붙입니다.+맨 위 
 +MAILTO=""
  
-====필요없는 syslog 삭제하기====+추가 
 +====필요없는 syslog ====
  
-/var/log/syslog+''/var/log/syslog''
  
 이 파일을 보면 크론이 실행될 때마다 로그가 쌓이는 것을 볼 수 있다. 별 내용도 없고 꼴보기 싫으니 없애보자. 이 파일을 보면 크론이 실행될 때마다 로그가 쌓이는 것을 볼 수 있다. 별 내용도 없고 꼴보기 싫으니 없애보자.
- +===rsyslog=== 
-  /etc/rsyslog.d/50-default.conf+  sudo nano /etc/rsyslog.d/50-default.conf
 파일을 보면 파일을 보면
  
 +<file>
   *.*;auth,authpriv.none     -/var/log/syslog   *.*;auth,authpriv.none     -/var/log/syslog
 +</file>
 라는 항목이 있는데 이곳에 cron.none 을 추가하면 된다. 라는 항목이 있는데 이곳에 cron.none 을 추가하면 된다.
  
 +<file>
   *.*;auth,authpriv.none,cron.none     -/var/log/syslog   *.*;auth,authpriv.none,cron.none     -/var/log/syslog
 +</file>
  
 그리고 당연히 디먼 재시작 그리고 당연히 디먼 재시작
   sudo service rsyslog restart   sudo service rsyslog restart
 +===다른 방법===
  
 +https://languor.us/cron-pam-unix-cron-session-session-opened-closed-user-root-uid0
  
-http://www.linuxtopia.org/online_books/linux_beginner_books/debian_linux_desktop_survival_guide/CRON_Regular.shtml +<file> 
- +Go to the /etc/pam.d directory. 
-{{tag>crontab linux 우분투}} +Open the file common-session-noninteractive in an editor
- +Look for the following line: 
 +session required        pam_unix.so 
 +Above this line, add the following: 
 +session     [success=1 default=ignore] pam_succeed_if.so service in cron quiet use_uid 
 +Save the file and exit. 
 +Restart crond using something like service cron restart. 
 +</file>