CentOS에서 Cron에 등록된 스크립트가 동작 안하는 문제.

jchoi3701의 이미지

CentOS 5.4에서 사용하던 Cron을 CentOS5.5로 재설치 후에 Cron에 등록을 했더니 동작은 하는데 실행결과가 안나옵니다.

분명한것은 이건 사용하던 스크립트 및 프로그램이고 OS만 Server급 설치에서 기본설치로 변경 후 해보니 안되는것입니다.

아래는 제가 해본 방법입니다.
==================
OS : CentOS 5.5
# uname -r
2.6.18-194.el5
설치옵션 : 기본설치
==================

# crontab -l
*/2 * * * * /TEST/test.sh // 매 2분마다 실행

# cat /TEST/test.sh // test는 DB로 부터 select를 수행해 파일로 기록하는 프로그램 입니다.
#!/bin/sh
export PATH=$PATH:/TEST:.
export TEST_PATH=/TEST
cd $TEST_PATH
./test

#tail -f /var/log/cron // 2분마다 실행이 되고 있으나 파일로 기록이 되지 않음
Mar 13 13:00:01 TEST crond[621]: (root) CMD (/TEST/test.sh)
Mar 13 13:02:01 TEST crond[1455]: (root) CMD (/TEST/test.sh)
Mar 13 13:04:01 TEST crond[1521]: (root) CMD (/TEST/test.sh)
Mar 13 13:06:01 TEST crond[2389]: (root) CMD (/TEST/test.sh)
Mar 13 13:08:01 TEST crond[2429]: (root) CMD (/TEST/test.sh)

# /TEST/test.sh // 직접실행하면 파일로 기록이 됨.

이거 사용하던 스크립트와 파일인데, OS 재설치 후 Cron은 기동 하는데, 결과가 생성 안되는 이유를 모르겠습니다.

xinetd를 설치하라는 글도 있어서 설치해봤는데... 안되네요 ;;

아시는분 답변 부탁드립니다.

dgkim의 이미지

스크립트의 결과물은 메일로 발송됩니다.(출력 에러가 있을 경우)

스크립트에서 에러처리가 출력(stdout or stderr)되면, 해당 계정의 메일로 출력 결과물을 보내주십니다.

opensrc의 이미지

보통 로그인 쉘에서 문제없이 잘 실행되던 스크립트가

cron 에 등록한 다음에 안 되는 경우 중에

환경 변수가 달라서 발생하는 경우가 종종 있었습니다.

/etc/crontab 상단에 보통 환경변수들이 정의되어 있는데,

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/

이 변수들의 값이 로그인 쉘의 환경변수들하고 차이가 있어서

스크립트 동작이 달라지는 경우가 종종 있었습니다.

해결은,

/etc/crontab 의 변수값을 수정하거나,

스크립트 상에서 변수를 명시적으로 지정해서 처리해 주었습니다.