一個 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 ?這是我認為這會發生的唯一方式。

相關內容