我在谷歌云计算(GCE)上有一个标准的Debian 8.9实例,我的启动脚本会被忽略。
在自定义元数据字段中,对于startup-script,我尝试运行Rscript(用于R文件的批量执行),然后是系统关闭,具有以下内容:
#! /bin/bash
sudo /usr/bin/Rscript /home/myuser/launch_script.R
sudo shutdown -h now
启动实例后会立即关闭,并忽略Rscript。删除最后一行以关闭会导致GCE实例启动,但要忽略Rscript。从终端运行“sudo / usr / bin / Rscript /home/myuser/launch_script.R”会导致脚本运行。它有一个755的chmod,所以我不认为这是一个权限问题。
除了这个问题,我在其他地方读到了日志应该在/ var / log /中发生,但是那里什么都没有。相反,我在我的实例的根目录中有一堆日志文件(只包含启动脚本,没有其他内容):
答案 0 :(得分:1)
我与谷歌云支持联系,后者给出了以下回复:
我在此处发布此信息,因为它不在他们的文档中(截至2017年8月)。我不确定它有多大帮助,因为google.startup.script在我的情况下并不存在(使用GCE上最新的Debian图像),但我确实运行了其他命令。
但是,我认为我的主要问题是:
我使用autossh连接到远程数据库。启动脚本在autossh之前运行。在脚本中建立40秒的延迟并以用户身份运行脚本(不是sudo-type root)似乎现在已经解决了这个问题。 Autossh作为主要用户运行,我认为在加载较低权限的用户定义脚本之前会加载它。
我正在使用来自用户帐户的一些gcloud命令,这些命令有自己的身份验证问题。以用户身份运行gcloud auth登录并确保对我的私钥的正确权限解决了这个问题。
始终记得检查/ var / log中的消息和syslog文件以进行故障排除。这让我可以看到系统启动时加载的内容的顺序。