Für ein Shellskript werden zwei Prozesse aufgelistet?

Für ein Shellskript werden zwei Prozesse aufgelistet?

Ich habe ein Shell-Skript, das einigermaßen einfach ist.

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

Wenn ich das Shell-Skript wie folgt ausführe,

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

Ich sehe, dass zwei Prozesse aufgelistet sind.

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

Ist das normal?

Antwort1

Ich habe gerade das, was Sie hier haben, neu erstellt und do something boring...durch ersetzt sleep 10000, und das ist nicht passiert. Ich glaube, Sie tun etwas, das fork() oder clone() verwendet, um einen untergeordneten Prozess zu erstellen. Ich hatte vermutet, dass nohup den Prozess als untergeordneten Prozess ausgeführt hat, aber das scheint nicht der Fall zu sein.

Antwort2

Wie Sie sehen, ist yyyyy der untergeordnete Prozess von xxxxx. Es ist völlig normal, dass dasselbe Shell-Skript innerhalb von „mysh.sh“ ausgeführt wird, was zu einem solchen Szenario führt.

Rufen Sie mysh.sh direkt/indirekt im Skript auf? Das ist meiner Meinung nach die einzige Möglichkeit, wie dies jemals passieren könnte.

verwandte Informationen