Ausführbare Dateien funktionieren nicht wie gewohnt

Ausführbare Dateien funktionieren nicht wie gewohnt

Wenn ich diesen Befehl eingebe

nohup CloudCompute.command &

es erzeugt das Ergebnis

[1] 782

das ist, was ich will. (Es ist übrigens die PID-Nummer)

Wenn ich also denselben Befehl in einer ausführbaren Datei ( .command) ausführe und versuche, die Ausgabe an eine Datei anzuhängen, funktioniert es nicht. Es wird nur das ausgegebene CloudCompute.commandErgebnis gedruckt, nicht die tatsächliche PID, die beim Ausführen angezeigt wird. Ich bin sicher, dass es sich im selben Verzeichnis befindet.

Warum passiert das? Was kann ich tun, damit die ausführbare Datei dieselbe Ausgabe erzeugt wie bei manueller Eingabe?

Danke

Antwort1

Warum passiert das?

Diese Ausgabe:

[1] 782

stammt nicht aus der ausführbaren Datei. Das ist das, was bashins Terminal geschrieben wird, wenn Sie etwas im Hintergrund ausführen. Es ist die Jobnummer [1]und die PID 782des Prozesses. Später, wenn der Prozess beendet ist, sehen Sie etwas wie:

[1]+  Done                    command

Dies liegt auch daran , dass bashfestgestellt wird, dass der Vorgang mit der Auftragsnummer 1 beendet ist.

Wenn ein Befehl im Hintergrund ausgeführt wird, wird die PID in der Variablen gespeichert $!:

$ sleep 10 &
[1] 1234
$ echo $!
1234

Was kann ich tun, damit die ausführbare Datei dieselbe Ausgabe erzeugt, als wenn ich sie manuell eingebe?

Daher Ihre ausführbare DateiIstdie gleiche Ausgabe erzeugen.

verwandte Informationen