예상되는 Python 환경에서 크론 작업을 실행하시겠습니까?

예상되는 Python 환경에서 크론 작업을 실행하시겠습니까?
  • 나는 사용자가 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

관련 정보