# CentOS 7 기준
에러 원인
리눅스 Crontab을 이용하여 shell script를 자동으로 실행하는 작업을 하던 도중 Could not find or load main class 에러가 발생했습니다.
(command not found 에러 포함)
shell 파일을 직접 실행하면 정상적으로 실행되지만 crontab으로 실행할 때만 에러가 발생해 구글링 해보니
Script in cron cannot find command 이 글을 통해 환경변수 설정 문제라는 것을 알게되었습니다.
직접 shell 파일을 실행할 때는 접속한 유저의 환경 변수를 사용하지만, crontab이 실행할때는 환경 변수를 찾을 수 없기 때문에 shell 파일에 환경 변수를 작성해줘야 합니다.
해결 방법
shell 실행에 필요한 환경 변수를 crontab에 등록해도 되지만 저는 shell 파일에 환경 변수를 포함하여 해결했습니다.
수정 전 shell 파일
today=$(date "+%A")
eval "export username=a password=a full=y OVERWRITE=Y"
수정 후 shell 파일
export TB_HOME=/home
export PATH=.:$TB_HOME
today=$(date "+%A")
eval "export username=a password=a full=y OVERWRITE=Y"
사용하는 환경 변수는 env 명령어를 이용하거나 ~/.bash_profile, /etc/profile 파일에서 확인할 수 있습니다.
'기타' 카테고리의 다른 글
[Word] 워드 표 페이지마다 머리글 행 반복 안될때 해결방법 (2) | 2023.02.14 |
---|---|
[Github] Fork해온 저장소에 잔디 심는 방법(커밋해도 잔디가 안심어질때) (0) | 2022.12.07 |
Sentry로 쉽고 안전하게 서비스 운영하기 (0) | 2022.01.23 |
[Docker] Docker 환경 Nginx에 SSL 인증서 적용하기(Let’s Encrypt) (1) | 2022.01.17 |
[Macbook] 맥북 외장모니터 연결 문제 임시 해결(모니터 깜빡임) (2) | 2022.01.09 |