ssh 远程服务器中的执行停止

ssh 远程服务器中的执行停止

我正在尝试通过我的机器上的 Linux 终端中的 SSH 在远程服务器上运行 Quantum ESPRESSO。

为此,我正在运行一个二进制可执行程序,其文本输入文件如下:

$ mpirun -np 20 pw.x < input.in > output.out
  

程序正在成功执行,但在某个时间点(2 小时后)停止,并且不会将结果写入输出文件。

我该怎么做才能从程序停止的地方再次执行它,因为我不想从头开始运行它(因为它会消耗大量时间)?

停止的原因可能是什么?

我该如何再次执行它?

请帮忙。我对此没什么线索了。

感谢您!

答案1

根据评论部分: 当 SSH 连接关闭时,您的脚本很可能会被远程操作系统终止,无论是由远程服务器还是本地机器。

远程机器为什么关闭连接?

这是 SSH 服务器的默认安全配置 - 当达到允许的最大会话时间或达到允许的最大空闲时间时关闭会话。

为什么远程用户启动的进程一旦注销就会终止?

答案比安全原因更简单:ssh logout 几乎相当于本地用户退出系统,从而终止他们启动的所有进程。系统发送一个信号每个过程信号这导致他们开始终止程序。

如何避免 ssh 注销后该进程终止?

一旦使用 SSH 连接到远程计算机,我们就可以使用以下命令运行命令/脚本禁止注销时忽略此信号:

nohup <script_or_program> &

就你的情况而言:

nohup mpirun -np 20 pw.x < input.in > output.out &

我们希望在注销后保留的每个进程都必须使用 来启动nohup

关于 nohup 的重要说明:

除非我们的进程自行终止,否则从此时起如果我们想手动终止它(通过远程或本地连接),我们必须使用以下命令手动向进程发送 SIGKILL 信号killkill -9 <process_id>

相关内容