![通过实例启动/初始化脚本使服务器在实例重新启动时运行作业](https://linux22.com/image/187194/%E9%80%9A%E8%BF%87%E5%AE%9E%E4%BE%8B%E5%90%AF%E5%8A%A8%2F%E5%88%9D%E5%A7%8B%E5%8C%96%E8%84%9A%E6%9C%AC%E4%BD%BF%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%9C%A8%E5%AE%9E%E4%BE%8B%E9%87%8D%E6%96%B0%E5%90%AF%E5%8A%A8%E6%97%B6%E8%BF%90%E8%A1%8C%E4%BD%9C%E4%B8%9A.png)
我想在服务器重新启动时以用户身份运行 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 似乎依赖于手动启动。
最终用途将是启动大量服务器来执行相同的工作,因此所有这一切都需要在没有任何交互的情况下发生。