Linux 기반 운영체제('debian-9-stretch-v20180307')를 사용하는 Compute Engine에서 Python 스크립트를 실행하고 싶습니다. bash 시작 스크립트를 사용하고 있으며 코드는 다음과 같습니다.
#! /bin/bash
sudo apt-get update
sudo apt-get -yq install python-pip
sudo pip install --upgrade google-cloud
sudo pip install --upgrade google-cloud-storage
sudo pip install --upgrade google-api-python-client
sudo pip install --upgrade google-auth-httplib2
echo "Making directories..."
mkdir -p /home/<myusername>/code
mkdir -p /home/<myusername>/rawdata
mkdir -p /home/<myusername>/etc...
sudo chown -R <myusername> /home/<myusername>
echo "Directory creation complete..."
gsutil cp gs://<mybucketname>/worker-python-code/* /home/<myusername>/code/
gsutil -m cp gs://<mybucketname>/* /home/<myusername>/rawdata/
echo "Boot complete."
인스턴스를 생성하고 스크립트를 사용하여 시작하면 모든 디렉터리가 예상대로 생성되고 gsutil 명령에 따라 모든 데이터가 복사됩니다. 그런 다음 인스턴스에 "SSH"를 사용하고 다음 명령을 사용하여 스크립트를 실행합니다.
python '/home/<myusername>/code/workermaster.py'
스크립트는 디스크에 .csv를 생성해야 하는 줄에 도달할 때까지 실행된 다음 "[Errno 13] Permission Denied" 오류가 발생합니다.
몇 가지 테스트를 수행하고 다른 스레드 및 인터넷 검색을 기반으로 SSH 셸을 실행하는 동안 스크립트를 실행해 보았지만 제대로 작동하지 않는 것 같습니다. 몇 가지 흥미로운 참고 사항과 관찰 사항은 다음과 같습니다.
1) "Console Output" 보고서에는 다음과 같은 줄이 있습니다.
chown: invalid user: ‘<myusername>’
그런 다음 많은 줄에서 다음과 같이 말합니다.
Created user account <myusername>
이는 아직 존재하지 않는 사람에게 소유권을 설정하려고 하는데 어떻게 해야 할지 모르겠습니다.
2) SSH를 통해 로그인한 후 명령줄을 "chown"하고 스크립트를 실행하면 문제 없이 예상대로 정확하게 실행됩니다.
3) 시작 스크립트에 다음과 같은 줄을 추가하여 문제를 해결하려고 했습니다.
sudo chmod -R 777 /홈/
이 명령을 사용하면 인스턴스에 SSH로 연결할 수도 없습니다.
결국 로그인하지 않고도 Python 코드를 원격으로 실행할 수 있도록 스크립트에 "nohang up" 줄을 추가할 계획이지만 여기서 무슨 일이 일어나고 있는지 이해하고 시작 후 SSH를 통해 로그인하여 내 명령을 실행할 수 있어야 합니다. 스크립트.