gpt4 book ai didi

linux - nohup "does not work"MPI运行

转载 作者:太空宇宙 更新时间:2023-11-04 10:12:20 27 4
gpt4 key购买 nike

我正在尝试使用“nohup”命令来避免在 linux MATE 上退出终端时终止后台进程。

我要运行的进程是一个MPIrun进程,我使用下面的命令:

nohup mpirun -np 8 solverName -parallel >log 2>&1

当我离开终端时,运行在不同内核上的进程被杀死。

另外我在日志文件中提到的另一件事是,如果我尝试运行以下命令

mpirun -np 8 solverName -parallel >log 2>&1

然后按 CTRL+Z(停止进程)日志文件显示:

Forwarding signal 20 to job

而且我实际上无法停止 mpirun 命令。所以我想我在做什么我不明白

最佳答案

在后台运行的作业仍然由您的登录 shell 拥有(nohup 命令在 mpirun 命令终止之前不会退出),因此它会在以下情况下发出信号你断开连接。这个脚本(我称之为 bk)是我使用的:

#!/bin/sh
#
# @(#)$Id: bk.sh,v 1.9 2008/06/25 16:43:25 jleffler Exp $"
#
# Run process in background
# Immune from logoffs -- output to file log

(
echo "Date: `date`"
echo "Command: $*"
nice nohup "$@"
echo "Completed: `date`"
echo
) >>${LOGFILE:=log} 2>&1 &

(如果您有好奇心,请注意小心使用 $*"$@"nice 运行该作业当我不在时,优先级较低。1.1 版于 1987 年 8 月 10 日被 checkin 版本控制——当时是 SCCS。)

对于您的流程,您将运行:

$ bk mpirun -np 8 solverName -parallel
$

提示几乎立即返回。该代码中的内容与您直接从命令行执行的操作之间的主要区别是:

  1. shell 脚本有一个子进程,它会立即终止。
  2. 脚本本身在后台的子 shell 中运行命令。

在它们之间,这些意味着该过程不会受到您的登录 shell 的干扰;它不知道孙进程。

直接在命令行上运行,你会写:

(nohup mpirun -np 8 solverName -parallel >log 2>&1 &)

括号开始一个子shell;子 shell 在后台运行 nohup 和 I/O 重定向并终止。 continuing 命令是您的登录 shell 的孙子,不会受到您的登录 shell 的干扰。

我不是 mpirun 方面的专家,从未使用过它,所以它有可能会做一些我没想到的事情。我对手册页的印象是它的行为或多或少像一个常规进程,即使它可以运行多个其他进程,可能在多个节点上。也就是说,它运行其他进程,但监视和协调它们,并且仅在其子进程完成时退出。如果那是正确的,那么我概述的内容就足够准确了。

关于linux - nohup "does not work"MPI运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48296285/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com