【问题标题】:Google Cloud Shell scripting IssueGoogle Cloud Shell 脚本问题
【发布时间】:2018-09-11 04:38:38
【问题描述】:

我在谷歌云中从 shell(SSH) 运行我的代码

python3 mycode.py

如果我关闭 shell,计算就会停止。我怎样才能开始计算然后关闭外壳(计算需要很长时间:)).....稍后再回来看看它是怎么做的。

我的代码在一定次数的迭代后继续打印结果。

【问题讨论】:

    标签: python-3.x shell google-cloud-platform google-compute-engine


    【解决方案1】:

    嗯,一般来说,您可以做的是以一种可以脱离交互式环境的方式运行代码。使用screentmux 等工具。但是,Google Cloud Shell 不是为运行后台任务而设计的,如果我没记错的话,它会在一小时后终止。

    您可能需要配置一个虚拟机来运行它。我可以推荐使用 tmux。使用 tmux,它就像运行 tmux 一样简单,然后在新的 shell 中运行你的脚本 python3 mycode.py。然后,您可以使用ctrl+b d 分离或简单地断开连接。当您重新连接时,您运行 tmux attach -d 以返回您的脚本。

    【讨论】:

    • 谢谢。有效。我可以从我的 shell 创建多个 VM 实例吗?
    • 你应该可以从谷歌云控制面板创建虚拟机实例,我不确定你是否可以直接从 shell 中创建。
    • cloud.google.com/compute/docs/instances/create-start-instance 例如gcloud compute instances create [INSTANCE_NAME] --image-family [IMAGE_FAMILY] --image-project [IMAGE_PROJECT],但根据您要创建的机器类型,有许多标志和选项
    【解决方案2】:

    我也会为你提供以下可能性:

    您也可以使用的Bash Builtin commanddisown。首先,在后台运行您的进程/脚本(使用&,或使用^Z 停止它,然后使用bg 重新启动):

    $ long_operation_command &
    [1] 1156
    

    请注意,此时进程仍链接到会话,如果它关闭,它将被终止。 您可以在后台运行jobs检查附加到会话的进程:

    $ jobs
    [1]+  Running  long_operation_command
    

    因此,您可以运行 disown 以从会话中分离进程:

    $ disown
    

    您可以再次检查您的脚本或命令登录的结果,或者使用top 确认该进程仍在运行。

    还要检查this,因为它可能很有趣,即nohup foofoo &$ foo & disown 之间的区别

    【讨论】:

      猜你喜欢
      • 2023-03-29
      • 2018-04-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-07
      • 2010-12-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多