nohup "does not work" MPIrun
nohup "does not work" MPIrun
我正在尝试使用 "nohup" 命令来避免在 linux MATE 上退出终端时终止后台进程。
我想要运行的进程是一个MPI运行进程,我使用以下命令:
nohup mpirun -np 8 solverName -parallel >log 2>&1
当我离开终端时,不同内核上的进程 运行ning 被杀死。
我在日志文件中提到的另一件事是,如果我尝试 运行 以下命令
mpirun -np 8 solverName -parallel >log 2>&1
然后按 CTRL+Z(停止进程)日志文件显示:
Forwarding signal 20 to job
而且我实际上无法停止 mpi运行 命令。所以我想我在做什么我不明白
要终止进程,您需要以下命令。
第一:
$ jobs -l
这给你这样的进程的 PID
[1]+ 47274 Running nohup mpirun -np 8 solverName -parallel >log 2>&1
然后执行以下命令杀死进程。
kill -9 {program PID i.e 47274 }
这将帮助您终止进程。
请注意,ctrl+Z 不会终止进程,但会暂停它。
对于问题的第一部分,我建议尝试这个命令,看看它是否有效。
nohup nohup mpirun -n 8 --your_flags ./compited_solver_name > Output.txt &
它对我有用。
如果它不适合您,请告诉我们。
后台的作业运行仍然属于您的登录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 日签入版本控制(当时为 SCCS)。)
对于您的流程,您需要 运行:
$ bk mpirun -np 8 solverName -parallel
$
提示 returns 几乎立即。该代码中的内容与您直接从命令行执行的内容之间的主要区别是:
- shell 脚本有一个子进程,它会立即终止。
- 脚本本身运行是后台子shell中的命令。
在它们之间,这些意味着该过程不受您的登录干扰shell;它不知道孙进程。
运行 直接在命令行上,你会写:
(nohup mpirun -np 8 solverName -parallel >log 2>&1 &)
括号开始一个子shell; sub-shell 运行s nohup
在后台使用 I/O 重定向并终止。继续命令是您登录 shell 的孙子,不受您登录 shell.
的干扰
我不是 mpirun
方面的专家,从未使用过它,所以它可能会做一些我意想不到的事情。我对手册页的印象是它的行为或多或少像一个常规进程,即使它可以 运行 多个其他进程,可能在多个节点上。也就是说,它 运行 是其他进程,但监视和协调它们,并且仅在其子进程完成时退出。如果那是正确的,那么我所概述的就足够准确了。
我正在尝试使用 "nohup" 命令来避免在 linux MATE 上退出终端时终止后台进程。
我想要运行的进程是一个MPI运行进程,我使用以下命令:
nohup mpirun -np 8 solverName -parallel >log 2>&1
当我离开终端时,不同内核上的进程 运行ning 被杀死。
我在日志文件中提到的另一件事是,如果我尝试 运行 以下命令
mpirun -np 8 solverName -parallel >log 2>&1
然后按 CTRL+Z(停止进程)日志文件显示:
Forwarding signal 20 to job
而且我实际上无法停止 mpi运行 命令。所以我想我在做什么我不明白
要终止进程,您需要以下命令。 第一:
$ jobs -l
这给你这样的进程的 PID
[1]+ 47274 Running nohup mpirun -np 8 solverName -parallel >log 2>&1
然后执行以下命令杀死进程。
kill -9 {program PID i.e 47274 }
这将帮助您终止进程。
请注意,ctrl+Z 不会终止进程,但会暂停它。
对于问题的第一部分,我建议尝试这个命令,看看它是否有效。
nohup nohup mpirun -n 8 --your_flags ./compited_solver_name > Output.txt &
它对我有用。 如果它不适合您,请告诉我们。
后台的作业运行仍然属于您的登录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 日签入版本控制(当时为 SCCS)。)
对于您的流程,您需要 运行:
$ bk mpirun -np 8 solverName -parallel
$
提示 returns 几乎立即。该代码中的内容与您直接从命令行执行的内容之间的主要区别是:
- shell 脚本有一个子进程,它会立即终止。
- 脚本本身运行是后台子shell中的命令。
在它们之间,这些意味着该过程不受您的登录干扰shell;它不知道孙进程。
运行 直接在命令行上,你会写:
(nohup mpirun -np 8 solverName -parallel >log 2>&1 &)
括号开始一个子shell; sub-shell 运行s nohup
在后台使用 I/O 重定向并终止。继续命令是您登录 shell 的孙子,不受您登录 shell.
我不是 mpirun
方面的专家,从未使用过它,所以它可能会做一些我意想不到的事情。我对手册页的印象是它的行为或多或少像一个常规进程,即使它可以 运行 多个其他进程,可能在多个节点上。也就是说,它 运行 是其他进程,但监视和协调它们,并且仅在其子进程完成时退出。如果那是正确的,那么我所概述的就足够准确了。