[ Server ][ Linux ] cron사용법(쉘스크립트, 리눅스 파일 자동실행)
페이지 정보
작성자 웹지기 댓글 0건 조회 24,512회 작성일 18-09-11 13:58본문
## 크론설정(쉘스크립트 실행)
---------- ---------- ----------------------------------------------------------------------------------------------------
필 드 의 미 범 위
---------- ---------- ----------------------------------------------------------------------------------------------------
첫번째 분 0-59
두번째 시 0-23
세번째 일 0-31
네번째 요일 0-7(0또는 7 / 1=월, 2=화, 3=수, 4=목, 5=금, 6=토, 7=일)
여섯번째 명령어 실행할 명령을 한줄로 쓴다.
한줄당 하나의 명령(두줄로 나눠서 표시 할 수 없슴)
#으로 시작하는 줄은 실행하지 않는다(주석표현)
---------- ---------- ----------------------------------------------------------------------------------------------------
##시간 설정 의미
= '*' 은 해당 필드의 모든 시간을 의미
= 3,5,7 와 같이 ,로 구분하여 여러 시간대를 지정
= 2-10 과 같이 - 으로시간 범위 지정
= 2-10/3 와 같이 - 으로 시간 범위를 /로 시간 간격을 지정
(2~10까지 3간격 3,6,9를 의미)
/dev/null 2>&1 은 지정한 명령어 처리 결과와 발생할지 모르는 에러메시지를 출력하지 않고 모두 버린다는 뜻
파일명 2>&1 은 결과와 에러를 파일로 저장
##예)
20 2 * * 6 명령어 ===> 매주 토요일 새벽 2:20
0 4-6 * * * 명령어 ===> 매주 오후 4,5,6시
5 */2 * * * 명령어 ===> 매일 2시간 간격으로 매5분에
15 1 1 * * 명령어 ===> 매월 1일 새벽 1:15
30 0 1 1,7 * 명령어 ===> 1,7월 1일 새벽 0:30
10 2 * * * /app11/minsang/APP/ldap/run.sh > /APP11/minsang/APP/ldap/cron_error.log();
## 크론 에디터 실행
crontab -e 실행시 vi 에디터가 나온다(환경변수 EDITOR에 따라 다른 에디터를 사용할 수 있다.)
crontab [-u 사용자 id] 파일
crontab [-u 사용자 id] {-l|-r|e}
crontab -l : 예약된 작업리스트
crontab -e : 예약된 작업 수정
crontab -r : 예약된 작업 삭제
##일반 사용자 crontab 명령어 사용하도록 설정 허가
/etc/cron.allow 사용자 아이디
##일반 사용자 crontab 명령어 사용을 제한
/etc/cron.deny 사용자 아이디
##크론 실행 확인
ps -ef|grep crond
##크론 명령
/etc/init.d/crond start{restart | stop}
##실행계획에 포함시킬수 있는 파일들
펄 파일 (*.pl)
쉘스크립트 파일 (*.sh)
PHP CLI 쉘스크립트 파일 (*.php)
##실행계획에 포함시킬때 주의사항
crontab에 쉘스크립트를 기재할때 절대경로를 기재한다. 명령어를 곧바로 써도 시스템명령이든 추가된명령이든 절대경로를 사용한다.
쉘스크립트 내부의 내용에는 시스템 명령(ls, mv 등등)외에 사용자 정의 파일, 설치된 프로그램 명령어는 모두 절대경로를 기재한다.
##사용 예제1
1
/usr/bin/mysqlcheck -Aao --auto-repair -u root --password=xxxxxx
2
> /junsik_sh/db_optimize.log;
3
##사용 예제2
4
58 01 * * * mkdir /jun
#상대경로로 명령어을 기재하면 Cron은 알수 없기 때문에 항상 절대경로로 명령어를 기재해야 한다.
※ 절대경로 쉘스크립트 예제
----------------------------------------------------------------------------------------------------
#!/bin/bash
# Writer : Zetswing
# FileName : TomcatCheck.sh
##########
SHELL=/bin/bash
JAVA_HOME=/home2/ysaraha/ysaraha.ttongfly.net/java/jdk1.5.0_10
export JAVA_HOME
##########
PROCESS_NAME=tomcat
PROCESS_COUNT=`ps -ef | grep $PROCESS_NAME | grep -v grep| wc -l`
if [ $PROCESS_COUNT = 0 ]
then /home2/ysaraha/Tomcat.sh s
fi
echo "TomcatCheck Success!"
----------------------------------------------------------------------------------------------------
##PHP 쉘스크립트 파일로 cron 이용해 실행하기
*/1 * * * * /usr/local/apache2/htdocs/index.php
*/1 * * * * php /usr/local/apache2/htdocs/index.php
*/1 * * * * /usr/local/bin/php /usr/local/apache2/htdocs/index.php
※세가지 경우 모두 해당 파일 상단에 php의 경로를 적당히 써주어야 합니다.
※세가지 경우 모두 실행권한을 chmod 700(root경우) 반드시 주어야 합니다.
※경로는 무조건 절대경로를 써야 합니다.
##크론은 실행계획이 처리될때마다 ROOT나 해당계정에게 메일을 보내준다.
메일을 안보내게 하는 방법을 알아보자
자신의 계정이 루트 계정일 경우
1. /etc/crontab 파일을 편집한다.
2. 아래 내용에서 MAILTO=ROOT 을 MAILTO="" 로 변경한후 저장한다.
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=ROOT
HOME=/
자신의 계정이 사용자 계정일 경우
쉘모드에서 crontab -e 명령으로 실행계획의 맨상단에 MAILTO="" 를 추가한다.
##주석 표시
해당 라인의 맨앞에 #을 넣으면 해당라인은 주석처리 됩니다.
##현재 통서버의 ysaraha 계정에서 돌아가는 crontab 실행계획 내용
MAILTO=""
*/360 * * * * /home2/ysaraha/Backup.sh
*/30 * * * * /home2/ysaraha/TomcatCheck.sh
## 정기적인 실행계획을 원하면 아래의 폴더에 파일을 갖다 놓는다.
/etc/cron.hourly - 매시간마다 실행
/etc/cron.daily - 매일마다 실행
/etc/cron.weekly - 매주마다 실행
/etc/cron.monthly - 매달마다 실행
※ 위의 실행계획은 /etc/crontab에 정의되어 있다.
## crontab 로그 남기는 방법
# 실행시 nohup으로 실행하면 된다.
02 11 28 03 * nohup /sunrise/cron/run_imsi.sh >> /sunrise/cron/nohup_run_imsi.out
댓글목록
등록된 댓글이 없습니다.