Bash脚本不会在启动时运行

时间:2018-03-08 14:04:14

标签: bash pip google-cloud-platform google-compute-engine startupscript

我制作了以下bash脚本,并在Google云端虚拟机的启动脚本下添加了它。它似乎没有做任何事情,我不明白为什么。这是代码。我在.sh脚本中没有经验,所以我可能会遗漏一些简单的东西。如果有人可以提供帮助,我会很高兴。

#! /bin/bash
apt-get update
apt-get install python3-pip
apt-get install python3-venv
git clone https://github.com/account/myrepo.git
python3 -m venv myrepo
cd myrepo
source bin/activate
pip3 install beautifulsoup sklearn numpy pandas 
screen -AmdS  ./myrep/main.py

编辑:“在启动脚本下添加”意味着在创建Google vm时,您可以向该实例添加启动脚本。请参阅“直接提供启动脚本内容”部分https://cloud.google.com/compute/docs/startupscript

1 个答案:

答案 0 :(得分:1)

*** EDIT  以下是@Jofre的评论:根据官方docs here,您不需要sudo

  

在网络可用后,实例始终以root用户身份执行启动脚本。

以下内容可能取决于您使用的Linux发行版,至少应该在Debian中使用。如果以下内容无法使用您的发布信息编辑您的帖子。

  1. 您缺少sudo命令。
  2. 您应该在某些命令中添加-y标志,以确保它自动接受安装。
  3. beautifulsoup和sklearn不是正确的套餐。正确的是beautifulsoup4scikit-learn
  4. 我对screen命令不是很熟悉,但是按照发布的方式运行它会给我带来一些麻烦。我宁愿转到您的文件所在的目录,也可以直接运行:screen -AmdS main.py
  5. 所以你的文件应该是这样的:

    #! /bin/bash
    apt-get update -y
    apt-get install python3-pip -y
    apt-get install python3-venv -y
    apt-get install git -y
    git clone https://github.com/account/myrepo.git
    python3 -m venv myrepo
    source myrepo/bin/activate
    pip3 install beautifulsoup4 numpy scikit-learn pandas
    cd  /{path-to-your-main.py-file}/
    screen -AmdS main.py                         
    

    一般来说,最好在运行相同操作系统的某台机器上测试启动脚本的命令,并验证所有命令是否在没有进一步交互的情况下运行。