我有一个功能比较简单的 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?我认为这是唯一会发生这种情况的方式。