我可以访问一些 Linux 工作站,在这些工作站上我可以在我的笔记本电脑上运行我的 C++ 可执行文件,但问题是每次我从笔记本电脑的终端运行作业时,我都必须为每个作业保留一个终端窗口...我需要一种方法将作业提交给 Linux 机器,并且只在执行完成后查看一次结果...我知道这可以在 FORTRAN 可执行文件中完成,只需在末尾添加 & 即可,我尝试使用:mpirun -np 20 ./a 200 1000000& 和 mpirun -np 20 ./a 200 1000000 & 但它们都不起作用......
有没有办法在 Linux 中做同样的事情?
答案1
使用屏幕命令怎么样?
答案2
正如其他人所说,你可以运行它们screen
。tmux
你也可以看看nohup
nohup mpirun -np 20 ./a 200 1000000 & > output.log 2>&1
因为如果没有类似的东西,nohup
您就无法退出在后台运行作业的会话,否则当 Shell 发送信号时它们将停止运行HUP
。
答案3
使用tmux
或更早的版本screen
在远程服务器上维护终端会话,您可以随意连接或断开连接。查看每个命令的文档以了解具体信息。
答案4
我假设你有很多作业,并且希望有一个队列来放置作业。我建议使用类似redis,但 screen/tmux 方法也相当可靠。