【问题标题】:How to set $HOME before startup script in Google Compute Engine如何在 Google Compute Engine 中的启动脚本之前设置 $HOME
【发布时间】:2017-11-26 12:26:41
【问题描述】:

在我的用例中,我尝试使用 $HOME 变量在实例启动中识别我的应用服务器路径。

我正在使用带有 $HOME 变量的启动脚本的 Google 计算引擎。但它看起来 $HOME 未设置或在谷歌云中执行启动脚本时未创建用户。

它会抛出 $HOME not set 错误。有什么解决方法吗?现在我必须在第一次创建后重新启动实例。这样在我重新启动时将设置 $HOME 变量。但这对于生产来说是一个丑陋的 hack。

有人可以帮我解决这个问题吗?

【问题讨论】:

  • 您有机会测试我的答案吗?成功了吗?

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


【解决方案1】:

当用户尚未创建并且没有用户登录时,启动脚本以root身份执行(您可以检查它在启动时运行$ users并在重启后比较$ cat /etc/shadow的输出)。

老实说,我不明白重启如何让您的$HOME 在启动时被填充,因为在 Linux 上,HOME 环境变量是由登录程序设置的:

  • 通过控制台登录、telnet 和 rlogin 会话
  • sshd 用于 SSH
  • gdm、kdm 或 xdm 用于图形会话的连接。

但是,如果您需要重新启动并且不想手动执行,您可以在创建机器后重新启动一次:

if [ -f flagreboot ]; then
 ...
 your script
 ...
else
 touch flagreboot
 reboot
fi

另一方面,如果您知道哪个将是应用程序的 $HOME 路径,您可以考虑在启动时简单地导出此变量以手动填充它。

 $ export HOME=/home/username

【讨论】:

    猜你喜欢
    • 2017-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多