cron 으로 find 명령어 자동 실행하기
글쓴이: lusilis / 작성시간: 화, 2005/04/26 - 11:35오전
별것도 아닌것 같은데 또 삽질하고 있습니다.. ;;
절 구제해 주세요.. ㅠ_ㅠ)
환경은 Redhat 9.0 을 사용하고 있습니다.
단순히 crontab 에 아래와 같은 명령어를 작성해서 실행하는데 수동으로는 잘되고 cron 으로 실행하면 먹히질 않네요..
01 00 */3 * * find /data/LOG/App/logs -mtime +1 \( -name *.log.* \) -exec rm -rf {} \;
다른 설정들도 비슷한 형식으로 등록 되어 있지만 잘 돌아갑니다..
어여뿐 중-_-생을 구해주세요.. ;;
Forums:
cron 으로 셋팅한게 잘 작동하지 않을 때는stdout 과 stde
cron 으로 셋팅한게 잘 작동하지 않을 때는
stdout 과 stderr 을 파일로 리다이렉션 해서 로그를 남겨서 확인해 보시면 쉽게 해결 할 수 있습니다.
01 00 */3 * * find /data/LOG/App/logs -mtime +1 \( -name *.log.* \) -exec rm -rf {} \; > /tmp/find.log 2>&1
이런식으로그리고 하나 더
stdout 으로 output 이 많은 프로그램을 crond 로 작동시키면 정상적으로 작동하지 않는 경우를 발견했습니다.
특정버전이나 특정 OS 에서 그러는 듯 하던데, 그에 대한 객관적 자료를 찾지 못해서 심증만 갖고 있는데, 같은 명령어이지만 "> /tmp/cron.log" 하는 식의 리다이렉션을 남기면 잘 작동하더군요.
일단 cron에 등록하려면 절대경로를 써줘야합니다.즉, find가 /
일단 cron에 등록하려면 절대경로를 써줘야합니다.
즉, find가 /usr/bin/에 위치하고 있다면 /usr/bin/find /data... 처럼 직접 해당
위치를 지정해서 명령을 실행시킬 수 있게 해야합니다.
하지만 이런식으로 등록을하다보면 관리하는데에도 문제가 발생할 수 있고 나중에
해당 명령이 수정될 경우 또다시 crontab을 수정해야하거나 많은 줄로 늘어날 경우가
있으므로... 해당 명령을 하나의 스크립트파일로 만든후에 해당 스크립트 파일을
등록시켜놓는것이 좋습니다.
------------------------------
좋은 하루 되세요.
메타문자가 너무 많아서 그럴수도 있죠. (\( 등)아예 스크립트로 바
메타문자가 너무 많아서 그럴수도 있죠. (\( 등)
아예 스크립트로 바꾸고 스크립트를 등록하는게 속편할수도 있습니다.
--
익스펙토 페트로눔
보통 cron에 환경변수 중 PATH를 재정의 하지 않습니까?cr
보통 cron에 환경변수 중 PATH를 재정의 하지 않습니까?
cron에서는 PATH를 보안(?)문제때문에 시스템 환경변수의 PATH를 사용하지
않는것으로 알고 있습니다.
그래서 Shell Script 를 작성하고 이를 Cron에서 사용하는게 좋은것 같습니다.
기타 설정등을 미리 해당 Script에서 재정의 해서 사용할 수 있고,
작업의 변경 추가에도 유연하게(?) 대처 할 수 있는것 같습니다.(개인적인 생각입니다)
댓글 달기