Gaussian 在远程 Linux 机器上使用 nohup 运行,当本地计算机在退出 shell 之前关闭电源时,它会被杀死

Gaussian 在远程 Linux 机器上使用 nohup 运行,当本地计算机在退出 shell 之前关闭电源时,它会被杀死

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

高斯

高斯生成不同的子可执行文件(“链接)跑步时。例如,我通过运行 启动 Gaussian nohup g09 < test.in > test.out 2> test.out &,并且会在特定情况下g09生成不同的links,例如l301.exe和。l502.exe

运行高斯

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

  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 之前关闭本地计算机电源时被杀死?

答案1

想法#1——否认

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

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

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

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

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

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

想法 #3 - 使用 tmux 或 screen

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

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

答案2

这应该更好地分离您的应用程序:

nohup ${PATH_OF_APPLICATION}/app </dev/null >/dev/null 2>&1 &

如果由于某种原因这仍然不起作用,请尝试:

echo ${PATH_OF_APPLICATION}/app | at now

相关内容