![一個 shellscript 列出兩個進程?](https://rvso.com/image/1419604/%E4%B8%80%E5%80%8B%20shellscript%20%E5%88%97%E5%87%BA%E5%85%A9%E5%80%8B%E9%80%B2%E7%A8%8B%EF%BC%9F.png)
我有一個 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 ?這是我認為這會發生的唯一方式。