crontab을 설정하여 자동으로 stats.pl을 실행하자..
-------------------------------------------------------------------------------------------------------------------------------
# vi cronexample
# How to have PsychoStats update every 30 minutes.
# Since parsing the logs isn't really a high priority
# (to me, anyways) I use "nice" to let other CPU
# intensive apps get more CPU time. I do this so its
# less likely of lagging the HLDS server.
#
# This example will make the stats update at the top
# and middle of the hour, every hour.
# Since parsing the logs isn't really a high priority
# (to me, anyways) I use "nice" to let other CPU
# intensive apps get more CPU time. I do this so its
# less likely of lagging the HLDS server.
#
# This example will make the stats update at the top
# and middle of the hour, every hour.
0,30 * * * * nice /full/path/tothe/program/stats.pl
# To install a cronjob on linux type "crontab -e" at the
# prompt and insert a similar line like above. Then save the
# file and linux will then run the cronjob at the
# intervals specified.
아래는 crontab의 설정시 참고할 만한 crontab의 설명서 이다.
읽어보면 안다. 모르면 최소 3번만 읽어라. 그러면 이해할 것이다.
cron에는 모두 일곱개이 필드가 있습니다. 그 포맷을 보면
mimute hour day month weekday username command
첫번째는 분을 나타냅니다.(0~59)
두번째는 시간을 나타내죠.(0~23)
세번째는 일, 즉 한달중의 날을 얘기하죠.(1~31)
네번째는 달, 즉 1년중의 달을 나타냅니다.(1~12)
다섯번째는 일주일중의 날을 얘기합니다. 즉 월요일~일요일.(1~7)
두번째는 시간을 나타내죠.(0~23)
세번째는 일, 즉 한달중의 날을 얘기하죠.(1~31)
네번째는 달, 즉 1년중의 달을 나타냅니다.(1~12)
다섯번째는 일주일중의 날을 얘기합니다. 즉 월요일~일요일.(1~7)
그러니까 매일 새벽 한시에 test란 명령이 실행되기를 원하신다면,
아래 같은 내용을 crontab 에 저장을 해주시면 됩니다.
0 1 * * * /home/test
모든 필드의 구분은 space이며, 한 필드에 여러값을 사용하려면, space없이 콤마로 구분합니다.
또한 cron 데몬은 다른 데몬들 처럼 restart를 하실 필요가 없습니다.
또한 cron 데몬은 다른 데몬들 처럼 restart를 하실 필요가 없습니다.
9.4. Cron 과 crontab 파일을 이용하여 작업을 자동화하기
당신도 대부분의 리눅스 사용자와 마찬가지로, 반복적으로 어떤 특정한 시간에 어떤 작업을 시작하도록 예약할 필요를 느낄 것이다. 그러한 작업은 분 단위로 반복되는 것일 수도 있고 1년에 한번 반복되는 것일 수도 있다. 이러한 예약 기능은 ``cron'' 기능을 이용하여 구현할 수 있다.
리눅스의 cron 기능은 다른 유닉스와 거의 같게 구현되어 있다. 하지만, 레드햇은 작업의 스케쥴을 잡는데 있어서 다른 리눅스 배포판과는 약간 다른 방식을 채택하고 있다. 다른 배포판과 마찬가지로 스케쥴링 정보는 시스템내의 (``/etc/'' 디렉토리의) ``crontab'' 파일에 다음과 같은 형식으로 저장된다:
분 시 일 월 연 명령
각 항목은 정수로 (예를 들어, 1월부터 12월을 나타내기 위하여 1부터 12사이의 숫자를 사용) 지정할 수도 있고 몇개의 항목은 와일드카드 문자로 인식되는 ``*'' 문자로 (예를 들어, 월에 해당하는 항목에 * 표시가 있으면 매월 지정된 날짜, 지정된 시간에 명령이 실행된다는 것을 의미한다) 표시할 수도 있다. 몇가지 예를 들어보면:
# 매년 6월 15일 오후 4시 30분에 시스템 로그 파일을 메일로 발송한다
30 16 15 06 * for x in /var/log/*; do cat ${x} | mail postmaster; done
# 관리자에게 계절이 바뀌었음을 자정에 알려준다
00 00 20 04 * echo 'Woohoo, spring is here!'
00 00 20 06 * echo 'Yeah, summer has arrived, time to hit the beach!'
00 00 20 10 * echo 'Fall has arrived. Get those jackets out. :-('
00 00 20 12 * echo 'Time for 5 months of misery. ;-('
30 16 15 06 * for x in /var/log/*; do cat ${x} | mail postmaster; done
# 관리자에게 계절이 바뀌었음을 자정에 알려준다
00 00 20 04 * echo 'Woohoo, spring is here!'
00 00 20 06 * echo 'Yeah, summer has arrived, time to hit the beach!'
00 00 20 10 * echo 'Fall has arrived. Get those jackets out. :-('
00 00 20 12 * echo 'Time for 5 months of misery. ;-('
표준출력 (즉, 터미널) 으로 출력이 나오는 명령, 예를 들어 위의 예에서 사용한 ``echo'' 명령, 의 출력은 ``루트'' 계정에게 메일로 전송된다. 이렇게 메일이 가지 않도록 하려면 다음의 예처럼 출력을 널 장치 (null device) 로 파이프 연결하면 된다:
00 06 * * * echo 'I bug the system administrator daily at 6:00am!' >/dev/null
표준인 ``crontab'' 외에도 레드햇은 몇개의 디렉토리를 추가하였다:
/etc/cron.hourly/
/etc/cron.daily/
/etc/cron.weekly/
/etc/cron.daily/
/etc/cron.weekly/
이름에서 알 수 있듯이, 이들 디렉토리의 아무 곳에나 실행가능한 파일을 둘 수 있으며, 이들 파일은 각기 매시, 매일, 매주 단위로 실행된다. 이 방식은 빈번한 작업을 지정할 때에는 시간을 절약해줄 수 있다; 그냥 실행가능한 스크립트나 프로그램을 적절한 디렉토리에 가져다 놓고 (또는 다른 곳에 있는 파일에 대하여 심볼릭 링크를 걸어놓고) 그 일은 신경쓰지 않아도 된다.
# 6시간마다 실행하도록 한다.
0 */6 * * * nice /psychostats1.9/stats.pl
# 저희 피시방 서버의 경우 위와 같이 설정을 했습니다.
댓글 없음:
댓글 쓰기