Gaussian,在远程 linux 机器上用 nohup 运行,当本地计算机在退出 shell 之前断电时被杀死

SOU*_*ser 5 shell ssh nohup

我在 Windows 上通过 SecureCRT 在远程 Linux 上运行 Gaussian 时遇到问题。

高斯

Gaussian在运行时会生成不同的子可执行文件(“链接”)。例如,我通过运行开始高斯nohup g09 < test.in > test.out 2> test.out &,并g09会产卵不同linkS,从而为l301.exel502.exe在特定的情况下。

运行高斯

当我连接到远程 Linux 机器并使用nohup ${Path_Of_Gaussian}/g09 < jobname.in > jobname.out 2> jobname.out &以下命令运行 Gaussian 时:

  1. 如果我通过键入exit并按退出 shell Enter,我可以退出而 Linux 上的 Gaussian 继续运行(特定可执行文件的名称取决于特定时间)。

  2. 如果我关闭计算机电源(然后 SecureCRT 将关闭),Linux 上的 Gaussian 会被杀死并抱怨“挂断”。

  3. 如果我输入exit并按退出Enter,然后登录,我可以关闭计算机,Linux 上的 Gaussian 继续运行。

  4. jlliagre的答案在这种情况下不起作用。

运行简单命令

以一个简单的可执行文件为例,它什么都不做(即,不处理输入和输出)但休眠 10 分钟。当我运行它时nohup ${Path_Of_Executable}/executable &

  1. 如果我通过键入exit并按退出 shell Enter,我可以退出并且可执行文件继续在 Linux 上运行。

  2. 如果我关闭计算机电源(然后 SecureCRT 将关闭),在 Linux 上运行的可执行文件将被杀死。

  3. 如果我通过键入exit并按退出Enter,然后登录,我可以关闭计算机(然后 SecureCRT 将关闭)并且 Linux 上的可执行文件继续运行。

  4. 正如jlliagre知识渊博的答案,如果我运行nohup ${Path_Of_Executable}/executable </dev/null >/dev/null 2>&1 &,我可以在 Linux 上的可执行文件继续运行时关闭电源。

换句话说,为什么在远程机器上运行的 Gaussian 会nohup在本地计算机在退出 shell 之前关闭电源时被杀死?

slm*_*slm 4

想法#1——否认

根据您描述问题的方式,听起来 Guassian 仍然与它所产生的 shell 存在一些联系。

除了运行之外,您还可以尝试的另一件事nohup是运行disown -a,尽管这应该执行相同的操作,断开所有生成的进程接收 SIGHUP 的连接。

想法 #2 - 将其包装在另一个 Bash 中

另一个想法是像这样调用 Guassian。

  1. 登录到远程机器
  2. nohup bash
  3. 在这个辅助 shell 中运行 Guassian

这可以防止 Guassian 在本地计算机失去连接时被终止。

想法 #3 - 使用 tmux 或 screen

我也遇到过与此类似的应用程序,我通常只是伸手去拿screen和/或tmux运行 Screen 内的远程系统上的应用程序,而不是太多地把头撞在桌子上。

这可以更好地保护进程,并且具有稍后能够重新连接的额外好处。