Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux “诺胡普”;“不起作用”;MPIrun_Linux_Nohup - Fatal编程技术网

Linux “诺胡普”;“不起作用”;MPIrun

Linux “诺胡普”;“不起作用”;MPIrun,linux,nohup,Linux,Nohup,我试图使用“nohup”命令来避免在linux MATE上退出终端时终止后台进程 我要运行的进程是MPIrun进程,我使用以下命令: nohup mpirun -np 8 solverName -parallel >log 2>&1 当我离开终端时,在不同内核上运行的进程被终止 另外一件我在日志文件中提到的事情是,如果我尝试只运行以下命令 mpirun -np 8 solverName -parallel >log 2>&1 然后按CTRL+Z(停止进

我试图使用“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命令。因此,我想在我正在做的事情中有一些我不明白的事情,要杀死进程,您需要以下命令。 第一:

$jobs-l

这将为您提供如下流程的PID

[1]+47274运行nohup mpirun-np 8 solverName-parallel>日志2>&1

然后执行以下命令终止进程

kill-9{程序PID即47274}

这将帮助您终止该过程

请注意,ctrl+Z不会终止进程,但会暂停进程

对于问题的第一部分,我建议尝试这个命令,看看它是否有效

nohup nohup mpirun-n 8——您的\u标志。/compited\u solver\u name>Output.txt&

这对我有用。
告诉我们它是否对您不起作用。

后台运行的作业仍然属于您的登录shell(直到
mpirun
命令终止,
nohup
命令才会退出),因此在您断开连接时会收到信号。这个脚本(我称之为
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
在我不在时以较低的优先级运行作业。1987-08-10年,版本1.1被签入版本控制-SCCS。)

对于您的流程,您可以运行:

$ bk mpirun -np 8 solverName -parallel
$
提示几乎立即返回。代码中的内容与直接从命令行执行的操作之间的主要区别是:

  • shell脚本有一个子进程,它会立即终止
  • 脚本本身在后台的子shell中运行命令
  • 在它们之间,这意味着该过程不会受到登录shell的干扰;它不知道孙子的过程

    在命令行上直接运行时,您可以编写:

    (nohup mpirun -np 8 solverName -parallel >log 2>&1 &)
    
    括号开始一个子shell;子shell在后台运行
    nohup
    ,具有I/O重定向并终止。continue命令是登录shell的孙子,不会受到登录shell的干扰

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