如何在启动时或在一行中连续连接到 gcloud 实例和 运行 命令

How to connect to a gcloud instance and run a command either on startup or consecutively in one line

我在启动 gcloud 虚拟机服务器时尝试 运行 命令。我在控制台自定义元数据中添加了以下命令 键:

startup-script 

值:

#! /bin/bash
parallel 'screen -d -m python3 Documents/myscript.py' ::: arg1 arg2

但是当我启动 vm 实例时,它没有 运行 因为我在键入 screen -list 时没有看到任何屏幕。但是,当我使用以下命令通过 SSH 连接 gcp 工具时

gcloud beta compute ssh --zone "us-west1-c" "instance-1" --project "unique-kakaw-123456" 

然后是运行

parallel 'screen -d -m python3 Documents/myscript.py' ::: arg1 arg2

连续 运行正确。

我如何在 gcp 上启动时将我的脚本设置为 运行,或者如果失败,请使用 gcloud 命令将命令设置为 运行 同一行中的命令,这样当我点击输入,它将连接到服务器,然后 运行 命令。因为如果我将上述两个命令放在同一行并添加一个 ;这显然行不通。

出于某种原因,我可以将脚本添加到 rc.d 并在我家里的 ubuntu 电脑上更新,它工作正常。我不知道为什么它在 gcp 上不起作用。

启动脚本应该可以正常工作。以下是可能发生的情况:

1。 Python 脚本未被执行,因为找不到它

Compute Engine documentation 说:

The instance always executes startup scripts as root after the network is available.

因此,如果 Python 脚本在您的主目录中,请提供完整路径(将 [USER] 替换为实际用户):

#! /bin/bash
parallel 'screen -d -m python3 /home/[USER]/Documents/myscript.py' ::: arg1 arg2

2。 Python 脚本运行然后退出,因此屏幕终止 window

Screen's User Manual 说:

When a program terminates, screen (per default) kills the window that contained it. If this window was in the foreground, the display switches to the previously displayed window; if none are left, screen exits.

因此,如果您的 Python 脚本过早退出,请将此添加到您的 /etc/screenrc

zombie qr

Here is what this parameter does:

When a string of two keys is specified to the zombie command, ‘dead’ windows will remain in the list.


郑重声明,我在我的 GCP 实例中复制了您的启动脚本配置(提供完整路径),我可以确认它确实有效:有两个 屏幕 运行 我的 Python 脚本,每个脚本都有自己的参数。