断开 PuTTY 与 Amazon Web Services EC2 的连接

断开 PuTTY 与 Amazon Web Services EC2 的连接

我使用PuTTY提交bash文件 来Amazon Web Services EC2运行文件。提交文件时R光标消失,直到所有文件运行完毕后才重新出现(目前约 40 分钟后,但最终 10-20 小时后)。PuTTYbashR

我在各个大学和非政府组织使用集群时从未见过这种情况。从历史上看,光标总是立即重新出现。

如果我在所有R文件运行完成之前关闭笔记本电脑,这会导致R文件崩溃或无法完成运行吗?

有什么方法可以让光标立即重新出现吗PuTTY

答案1

我在各个大学和非政府组织使用集群时从未见过这种情况。从历史上看,光标总是立即重新出现。

据我所知,区别在于大多数集群会告诉您使用特殊命令,例如qsub用于批量作业提交的命令。这些命令会立即返回,因为它们不会立即运行脚本 - 它们只是将其添加到队列中,然后由单独的系统决定在何处以及何时运行您的脚本。

然而,在 AWS 上,你不需要任何这些——它是一个完全普通的 Linux 系统。如果你直接通过./myscript.sh或运行 Bash 脚本bash myscript.sh,那么它立即在终端中运行。与运行的任何其他程序一样,shell 提示符在程序完成之前不会再次出现。

如果我在所有 R 文件运行完成之前关闭我的笔记本电脑,这会导致 R 文件崩溃或无法完成运行吗?

是的,当终端关闭时(即当连接“挂断”),从该终端运行的所有进程都会收到退出信号。它们可能会忽略该信号,但通常会立即退出。

有什么方法可以让光标立即重新出现在 PuTTY 中?

Linux 上长时间运行的任务有两种最常见的选项:

  1. 使用 Bash 的作业控制,即附加&在后台运行命令。例如:

    ./slowscript.sh &
    

    如果您忘记添加&,您可以按CtrlZ,然后按bg命令将已运行的程序置于后台。

    请注意,当您关闭 SSH 连接时,受作业控制的程序仍将被终止。为了避免这种情况,您还需要disown每个作业 - 您将不再能够看到其状态,但它也不会再因挂断而被终止。

  2. 使用“终端多路复用器”,例如tmux或者屏幕。它们不需要处理批处理作业,而是让你将整个终端置于后台。

    因此,您可以先运行tmux创建一个“可分离”终端,然后从那里启动您的 R 脚本,并在运行时CtrlB按下以D将其分离。

    (即使您忘记分离,断开连接时也会自动发生 - 程序仍将在 tmux 内运行。)稍后您可以使用tmux at[tach]重新连接。

  3. 在某些 Linux 发行版中,您还可以使用 systemd 启动后台作业。首先需要使用 启用此功能sudo loginctl enable-linger $USER

    一旦启用,您可以使用以下方式启动后台任务systemd-run

    systemd-run --user --same-dir ./myscript.sh
    

    稍后您可以使用它systemctl --user .....来查看作业的状态。

相关内容