- 나는 사용자가
root
있고user1
- 내 모든 Python 스크립트는 다음에 의해 생성됩니다.
user1
- 자동화해야 하는 bash 파일을 만들었습니다. bash 파일이 내 Python 스크립트를 호출합니다.
- cron 파일에 bash 호출을 추가했습니다.
그러나 내 Python 환경 root
은아니요동일합니다 user1
(다른 버전, 라이브러리 패키지 등). 따라서 cron이 시작되면 root
환경이 사용 중이기 때문에 "라이브러리를 찾을 수 없습니다"와 같은 Python 오류가 발생합니다 .
user1
내 cron 명령이 Python 환경 내에서 Python 스크립트를 대신 실행하는지 어떻게 확인할 수 있습니까 root
?
내 cron 파일에서 몇 가지 변형을 사용해 보았지만 su
항상 비밀번호를 묻습니다. 완전히 자동화된 프로세스를 위해서는 이것이 필요합니다.
답변1
을 사용해 보셨나요 sudo su
?
sudo su -l "user1" -c "/path/to/bashscript.sh"
또는 crontab 상단에서 원하는 환경을 설정할 수 있습니다.
SHELL=/usr/local/bin/bash
PATH=<user1 path>
LOGNAME=user1
USER=user1
HOME=/home/user1
필요한 경우 bash 파일을 실행하기 전에 user1 구성 파일을 얻습니다.
0 12 * * * * . /home/user1/.bash_profile; /path/to/bashscript.sh
답변2
가상 환경을 사용하는 경우 cron에서 환경을 활성화할 수도 있습니다.
0 12 * * * * . /%user1-venv-location%/bin/activate; /path/to/bashscript.sh