サーバーの再起動時にユーザーとしてPythonスクリプトを実行したいと思います。サーバー自体は Terraform を介して Azure で実行されます。
という起動スクリプトがすでにありますstartup.sh
。サーバーで再起動が必要なさまざまなタスクを実行します。スクリプトでPythonスクリプトを実行させる行を追加したいと思います。後ろに再起動します。実行しようとしているコマンドのプレースホルダを持つ今の外観は次のとおりです。
#!/bin/bash
# fix cuda for azure. for some reason their instances have cuda installed wrong and this fixes it
sudo rm /usr/local/cuda
sudo ln -sf /usr/local/cuda-10.2 /usr/local/cuda
# pip install a few things. TF, for instance
pip install tensorflow
# HERE'S WHERE I NEED HELP:
some_command_to_make_something_run_on_next_startup --as_this_user nonRootUser --run_this_command "python myscript.py"
sudo reboot # the reboot is needed to make the cuda changes work
私は/etc/rc.local
成功せずにコンテンツを追加しようとしました。理由はわかりません。 cronも同様です。私がオンラインで収集したところによると、新しく起動されたインスタンスでは両方がアクティブではないように見え、cronは手動起動に依存しているようです。
最終的な用途は、同じタスクを実行するために多数のサーバーを稼働させることであるため、これらすべての操作は対話なしに実行する必要があります。