【发布时间】:2018-09-11 04:38:38
【问题描述】:
我在谷歌云中从 shell(SSH) 运行我的代码
python3 mycode.py
如果我关闭 shell,计算就会停止。我怎样才能开始计算然后关闭外壳(计算需要很长时间:)).....稍后再回来看看它是怎么做的。
我的代码在一定次数的迭代后继续打印结果。
【问题讨论】:
标签: python-3.x shell google-cloud-platform google-compute-engine
我在谷歌云中从 shell(SSH) 运行我的代码
python3 mycode.py
如果我关闭 shell,计算就会停止。我怎样才能开始计算然后关闭外壳(计算需要很长时间:)).....稍后再回来看看它是怎么做的。
我的代码在一定次数的迭代后继续打印结果。
【问题讨论】:
标签: python-3.x shell google-cloud-platform google-compute-engine
嗯,一般来说,您可以做的是以一种可以脱离交互式环境的方式运行代码。使用screen 或tmux 等工具。但是,Google Cloud Shell 不是为运行后台任务而设计的,如果我没记错的话,它会在一小时后终止。
您可能需要配置一个虚拟机来运行它。我可以推荐使用 tmux。使用 tmux,它就像运行 tmux 一样简单,然后在新的 shell 中运行你的脚本 python3 mycode.py。然后,您可以使用ctrl+b d 分离或简单地断开连接。当您重新连接时,您运行 tmux attach -d 以返回您的脚本。
【讨论】:
gcloud compute instances create [INSTANCE_NAME] --image-family [IMAGE_FAMILY] --image-project [IMAGE_PROJECT],但根据您要创建的机器类型,有许多标志和选项
我也会为你提供以下可能性:
您也可以使用的Bash Builtin command 是disown。首先,在后台运行您的进程/脚本(使用&,或使用^Z 停止它,然后使用bg 重新启动):
$ long_operation_command &
[1] 1156
请注意,此时进程仍链接到会话,如果它关闭,它将被终止。 您可以在后台运行
jobs检查附加到会话的进程:
$ jobs
[1]+ Running long_operation_command
因此,您可以运行 disown 以从会话中分离进程:
$ disown
您可以再次检查您的脚本或命令登录的结果,或者使用top 确认该进程仍在运行。
还要检查this,因为它可能很有趣,即nohup foo、foo & 和$ foo & disown 之间的区别
【讨论】: