【问题标题】:Can't run pm2 on google cloud compute instance无法在谷歌云计算实例上运行 pm2
【发布时间】:2019-10-25 08:35:51
【问题描述】:

当我跑步时

gcloud compute ssh user@instance-1

然后,当我进入 ssh 时,我输入 pm2,它会按预期打印出一条帮助消息。

如果我改为运行

gcloud compute ssh user@instance-1 --command "pm2"

它打印出bash: pm2: command not found

我之前安装了pm2(通过以root 用户身份运行npm install -g pm2 并以user 为良好衡量标准)。

这是怎么回事?

【问题讨论】:

    标签: javascript ssh google-cloud-platform google-compute-engine gcloud


    【解决方案1】:

    我的假设是,在第一个秘诀中,您执行登录意味着您的 .profile 和/或 .bashrc 脚本正在运行,这些脚本会修改您的 PATH 环境变量以包含您希望运行的命令的位置 (pm2 )。在第二个秘诀中,您提供--command 我的假设是可执行文件正在被分叉/执行(直接运行),而您的配置文件脚本没有被执行。这导致找不到命令。也许尝试运行一个脚本(通过命令)记录你的环境变量(例如/bin/env),看看它们与你实际登录时发现的有什么不同。

    另一种解决方案是在您的命令中提供pm2 的完整路径。

    【讨论】:

    • 是的,这绝对是它。当我通过 ssh --command 回显 $PATH 时,它会打印我的本地(非远程)路径。我无法通过编辑 .bashrc 或 .profile 或其他任何东西让遥控器使用自己的 PATH。你知道我怎样才能做到这一点,以便遥控器使用自己在 .bashrc 或其他地方设置的 PATH,这样我每次想通过命令行发送一个 ssh 命令时都不必手动设置路径?跨度>
    • 我认为我们需要了解正在发挥作用的框架。您始终可以通过指定执行的完整路径来运行命令......这将是一个故事。接下来,我们需要了解 PATH 环境变量设置在 /etc/environment 作为基础级别。如果需要,您可以扩充它以包含其他目录……这意味着它们对所有人都存在。与其考虑“如何运行 .bashrc 或 .profile”,不如考虑更多并了解运行这些命令对 PATH 的作用。
    • 我在这里找到了答案stackoverflow.com/questions/940533/… -- 感谢您的指导!
    猜你喜欢
    • 1970-01-01
    • 2017-12-30
    • 1970-01-01
    • 1970-01-01
    • 2020-09-06
    • 1970-01-01
    • 2018-04-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多