【问题标题】:Google cloud compute startup script ignored with no logging谷歌云计算启动脚本被忽略,没有日志记录
【发布时间】:2018-01-14 21:57:52
【问题描述】:

我在谷歌云计算 (GCE) 上有一个标准 Debian 8.9 实例,我的启动脚本被忽略了。

在自定义元数据字段中,对于启动脚本,我正在尝试运行 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”会导致脚本运行。它的 chmod 为 755,所以我认为这不是权限问题。

除了这个问题,我在其他地方读到日志记录应该发生在 /var/log/ 中,但那里什么都没有。相反,我在实例的根目录中有一堆日志文件(仅包含启动脚本,没有其他内容):

【问题讨论】:

    标签: google-cloud-platform google-compute-engine


    【解决方案1】:

    我联系了谷歌云支持,他们给出了以下回复:

    • 脚本定义保存在 /var/run/google.startup.script 下
    • 如果脚本最初没有运行,您可以使用以下命令手动强制它: $ sudo google_metadata_script_runner --script-type startup # 对于 Debian,或 # sudo /usr/share/google/run-startup-scripts # 在 Ubuntu 和旧图片

    我在此处发布此信息,因为它不在他们的文档中(截至 2017 年 8 月)。我不确定它有多大帮助,因为在我的案例中不存在 google.startup.script(使用 GCE 上的最新 Debian 映像),但我确实运行了其他命令。

    但是,我认为我的主要问题是:

    1. 我使用 autossh 连接到远程数据库。启动脚本在 autossh 之前运行。在脚本中构建一个 40 秒的延迟并以用户(不是 sudo 类型的 root)身份运行脚本现在似乎已经解决了这个问题。 Autossh 以主用户身份运行,我认为它会在加载低权限用户定义的脚本之前加载。

    2. 我正在使用来自用户帐户的一些 gcloud 命令,这些命令有其自身的身份验证问题。以用户身份运行 gcloud auth login 并确保我的私钥的正确权限解决了这个问题。

    请务必检查 /var/log 中的消息和系统日志文件以进行故障排除。这让我可以看到系统启动时加载的内容的顺序。

    【讨论】:

    • 3 年后,这帮助我完成了部分家庭作业。谁说我们不解决 SO 上的作业
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-07
    • 1970-01-01
    • 2021-09-15
    • 2020-10-11
    • 1970-01-01
    • 1970-01-01
    • 2021-03-18
    相关资源
    最近更新 更多