배경 :
환경변수 설정 전에 백그라운드 실행(nohup) 한 스크립트가, 환경변수 설정을 여전히 적용하지 못함
해결 :
환경변수 설정 후에는 반드시 스크립트를 재실행해야 그 환경변수가 적용된다.
이전에 nohup으로 실행한 스크립트는 당시의 환경변수로만 작동하며, 환경변수를 변경해도 이미 실행 중인 프로세스에는 반영되지 않는다.
1. 환경변수 적용 시점
스크립트에서 사용하는 환경변수는 스크립트 실행 당시의 쉘 환경에 따라 결정된다.
nohup을 통해 백그라운드에서 스크립트를 실행했을 때, 그 스크립트는 당시 실행된 쉘에서 설정된 환경변수를 그대로 사용한다.
2. 백그라운드에서 실행된 스크립트
백그라운드에서 실행된 스크립트는 실행 시점의 환경변수를 참조한다.
즉, nohup으로 실행한 스크립트는 실행 당시의 환경을 복사하여 사용.
그 후에 환경변수를 수정하더라도 이미 실행 중인 프로세스에는 그 변경 사항이 반영되지 않는다.
예를 들어:
- nohup으로 스크립트를 실행할 당시, Hive 환경변수가 설정되어 있지 않았다면 그 스크립트는 환경변수가 없는 상태에서 실행되며, 이후 환경변수를 설정해도 이미 실행 중인 스크립트에는 영향을 주지 않음.
- 다시 말해, 그 스크립트는 이전에 설정되지 않은 환경변수를 계속 사용.
3. 해결 방법
환경변수를 적용한 후에 스크립트를 제대로 실행하려면, nohup으로 다시 실행.
환경변수 변경 후에 실행하지 않으면, 스크립트는 이전에 적용된 상태로만 실행!
스크립트를 재실행하지 않는다면, 그 스크립트는 여전히 이전 환경에서 작동할 것이므로 hive -e 명령이 실패하거나, 올바른 Hive 설정을 찾지 못할 수 있다
'Data Engineering > Linux' 카테고리의 다른 글
[Linux] du 명령어 (디렉토리 별 용량 확인) / 옵션 (1) | 2024.07.24 |
---|---|
su,sudo 사용법 (root 권한 획득 방법) (0) | 2021.02.24 |
리눅스 콘다 설치, 실행 (conda command not found 해결법) (0) | 2021.01.28 |