리눅스에서 쉘 작성 후 실행 시에는 정상적으로 결과를 보여주었으나
crontab에 등록 후 실행 하니 "command not found"라는 오류가 났다.
/home/error_check.sh: line 13: psql: command not found
shell의 환경 변수와 crontab의 환경 변수가 달라서 발생을 하게 되었습니다.
$ echo $PATH
home/a/:/home/b/bin:/home/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/.local/bin:/home/bin:
터미널에에서 출력해보니 PATH로 지정 된 여러 경로가 나왔지만 ,
쉘에 "echo $PATH" 추가 하여 crontab으로 실행해보니
/usr/bin:/bin
환경변수가 서로 다르다는 것을 확인했습니다.
여러 해결 방법이 있었지만 저의 경우 crontab 설정부 최상단에 PATH를 지정하여, 환경변수를 동기화 시켜 해결 하였습니다.
$ contab -e
$ i
===================================
PATH="home/a/:/home/b/bin:/home/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/.local/bin:/home/bin:"
* * * * * /home/error_check.sh
기존 로그인 계정으로 환경변수를 확인한 후 해당 경로들을 복사하고
echo $SID_NAME
echo $ORACLE_HOME
echo $PATH
문제가 되는 쉘스크립트에 export 추가 하여 해결
export ORACLE_HOME="/oracle/app/client/12c"
export PATH="$ORACLE_HOMR/bin:$PATH"