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を介してログインして私のコマンドを実行できるようにする必要があります。スクリプト。