crontab 은 유저의 환경 변수를 가져오지 않는다.

발생일: 2009.11.09

문제:
이번에 서버 변경 작업을 하면서 기존 서버에 crontab 으로 등록되어 있는 내용을 똑같이 옮겨왔다.
정해진 시간에 몇 개의 쉘 프로그램을 실행시키는 구문이었는데,
이 놈들이 정상적으로 실행되지 않는다.

확인해보니, 각 쉘 프로그램에서는 자바의 루트 디렉토리를 칭하는 JAVA_HOME 환경 변수를 사용하는데,
이번 서버 변경 작업때문에 자바의 디렉토리 위치가 변경되었기 때문이었다.

어쩔 수 없이 각 파일을 열어 JAVA_HOME 변수를 설정하다가 문득,
'환경 변수를 왜 모든 쉘 프로그램에 각각 등록해둔 거지..?' 라고 생각하면서
JAVA_HOME 변수를 .profile 에 환경 변수로 추가하고 쉘 프로그램에 등록되어 있던 JAVA_HOME 은 삭제했다.

테스트로 sh 파일을 수행해보니, 잘 돌아간다~

그런데~~ 다음 날, crontab 에서 에러가 났다~~~~
sh 파일만 따로 수행하면 문제없이 잘 되는데, 왜 이런 걸까...
혹시 crontab 에서는 유저의 환경 변수를 가져오지 못하는가...?

해결책:
crontab 은 환경 변수를 가지지 않은 체로 실행된다고 한다.
그래서 환경 변수를 사용할 경우, 각 쉘 프로그램에서 따로 설정해주어야 한다.
(기존에 모든 쉘 프로그램에 같은 내용의 환경 변수가 각각 설정되어 있던 이유가 이거였다...)

자세한 내용은 아래 포스트를 참고하자.


카테고리

분류 전체보기 (711)
About me. (6)
Daylogs (676)
영어공부 (0)
My works - 추억 (29)
비공개 (0)