반응형
문제:
이번에 서버 변경 작업을 하면서 기존 서버에 crontab 으로 등록되어 있는 내용을 똑같이 옮겨왔다.
정해진 시간에 몇 개의 쉘 프로그램을 실행시키는 구문이었는데,
이 놈들이 정상적으로 실행되지 않는다.
확인해보니, 각 쉘 프로그램에서는 자바의 루트 디렉토리를 칭하는 JAVA_HOME 환경 변수를 사용하는데,
이번 서버 변경 작업때문에 자바의 디렉토리 위치가 변경되었기 때문이었다.
어쩔 수 없이 각 파일을 열어 JAVA_HOME 변수를 설정하다가 문득,
'환경 변수를 왜 모든 쉘 프로그램에 각각 등록해둔 거지..?' 라고 생각하면서
JAVA_HOME 변수를 .profile 에 환경 변수로 추가하고 쉘 프로그램에 등록되어 있던 JAVA_HOME 은 삭제했다.
테스트로 sh 파일을 수행해보니, 잘 돌아간다~
그런데~~ 다음 날, crontab 에서 에러가 났다~~~~
sh 파일만 따로 수행하면 문제없이 잘 되는데, 왜 이런 걸까...
혹시 crontab 에서는 유저의 환경 변수를 가져오지 못하는가...?
해결책:
crontab 은 환경 변수를 가지지 않은 체로 실행된다고 한다.
그래서 환경 변수를 사용할 경우, 각 쉘 프로그램에서 따로 설정해주어야 한다.
(기존에 모든 쉘 프로그램에 같은 내용의 환경 변수가 각각 설정되어 있던 이유가 이거였다...)
자세한 내용은 아래 포스트를 참고하자.
이번에 서버 변경 작업을 하면서 기존 서버에 crontab 으로 등록되어 있는 내용을 똑같이 옮겨왔다.
정해진 시간에 몇 개의 쉘 프로그램을 실행시키는 구문이었는데,
이 놈들이 정상적으로 실행되지 않는다.
확인해보니, 각 쉘 프로그램에서는 자바의 루트 디렉토리를 칭하는 JAVA_HOME 환경 변수를 사용하는데,
이번 서버 변경 작업때문에 자바의 디렉토리 위치가 변경되었기 때문이었다.
어쩔 수 없이 각 파일을 열어 JAVA_HOME 변수를 설정하다가 문득,
'환경 변수를 왜 모든 쉘 프로그램에 각각 등록해둔 거지..?' 라고 생각하면서
JAVA_HOME 변수를 .profile 에 환경 변수로 추가하고 쉘 프로그램에 등록되어 있던 JAVA_HOME 은 삭제했다.
테스트로 sh 파일을 수행해보니, 잘 돌아간다~
그런데~~ 다음 날, crontab 에서 에러가 났다~~~~
sh 파일만 따로 수행하면 문제없이 잘 되는데, 왜 이런 걸까...
혹시 crontab 에서는 유저의 환경 변수를 가져오지 못하는가...?
해결책:
crontab 은 환경 변수를 가지지 않은 체로 실행된다고 한다.
그래서 환경 변수를 사용할 경우, 각 쉘 프로그램에서 따로 설정해주어야 한다.
(기존에 모든 쉘 프로그램에 같은 내용의 환경 변수가 각각 설정되어 있던 이유가 이거였다...)
자세한 내용은 아래 포스트를 참고하자.
반응형
'OS > Linux' 카테고리의 다른 글
Oracle 12c CentOS 7에 설치 (0) | 2018.08.12 |
---|---|
리눅스 서버 60초안에 상황파악하기 (0) | 2018.08.01 |
cron 부팅시 프로그램 실행 (0) | 2018.08.01 |
리눅스 계정 만료 안되게 하기 (0) | 2018.07.04 |
[Ubuntu] 우분투 APT repository 제거하기 (0) | 2018.07.02 |