오늘은 crontab에 작업을 등록시켜두려고 하는데, crontab에서 주기적으로 sh을 실행시키고, 이 sh에서 파이썬 파일들을 실행시키는 구조였다.
그런데 sh에서 파이썬을 실행시킬 때 아무리해도 conda의 가상환경이 불러와지지 않고, 기본 파이썬 환경을 불러와서 라이브러리 오류들이 떴다. 뒤지고 뒤진 끝에 알아내서 나중에 까먹을까봐 적어두려고 한다.
아래 코드를 자신이 실행시키려는 sh의 최상단에 등록해 두면 된다.
# crontab에 등록할 sh 파일
#!/bin/bash
export PATH=/home/bch/miniconda3/bin:/home/bch/miniconda3/condabin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/snap/bin:/usr/bin/obsidian
source /home/bch/miniconda3/etc/profile.d/conda.sh
conda activate /home/bch/miniconda3/envs/{ENV_NAME}
conda info >> logs/conda_active.log
우선 crontab에서 bash shell을 불러올 때, 환경변수들을 불러오지 못한다고 한다.
따라서 자신의 환경변수들을 모두 다시 한번 등록해주고, `conda.sh`을 활성화 시켜준뒤, 자신의 가상환경을 절대경로로 참조해 준다. 이후 log를 등록해서 자신의 가상환경이 제대로 등록되었는지 확인할 수 있었다.
+) 추가적으로 원래 가장 상단에 `#!/bin/bash`를 사용함으로써 sh파일을 bash에서 시작해야하는데 왜 그런지는 모르겠지만 계속
`source command not found` 오류가 떴다.
그래서 crontab에 작업을 등록할 때 가장 상단에 `SHELL=/bin/bash`를 등록해주니 해결되었다.
SHELL=/bin/bash
* * * * * /home/bch/gunicorn_server.sh >> /home/bch/logs/start_log.log 2>&1
728x90
반응형