一个 shellscript 列出了两个进程?

一个 shellscript 列出了两个进程?

我有一个功能比较简单的 shell 脚本。

#!/bin/sh
do something boring...

当我执行这样的 shell 脚本时,

$ nohup sh mysh.sh > /null/dev/ 2>&1 &

我看到列出了两个流程。

$ ps -ef | grep mysh
... xxxxx 1     ... sh mysh.sh // same xxxxx
... yyyyy xxxxx ... sh mysh.sh // same xxxxx

这是正常的吗?

答案1

我只是重新创建了您这里的内容并将其替换do something boring...sleep 10000,并没有发生这种情况。我相信您正在使用 fork() 或 clone() 来创建子进程。我曾怀疑 nohup 将进程作为子进程运行,但事实并非如此。

答案2

可以看到,yyyyy 是 xxxxx 的子进程,在“mysh.sh”内部执行相同的 shell 脚本,出现这种情况是十分正常的。

您是否在脚本中直接/间接调用 mysh.sh?我认为这是唯一会发生这种情况的方式。

相关内容