Habe zwei Befehle cmd1 und cmd2. Von den beiden dauert die Fertigstellung von cmd2 länger. Müssen cmd2 und dann cmd1 ausführen.
Versucht, sie auf folgende Weise auszuführen:
bash$ (nohup ./cmd2>result2 &) && nohup ./cmd1>result1 &
oder
bash$ (nohup ./cmd2>result2 &) ; nohup ./cmd1>result1 &
Aber beide Male, wenn ich sehe, wartet cmd1 nicht darauf, dass cmd2 fertig ist und result1 gefüllt wird.
Wie kann man cmd1 nach cmd2 laufen lassen, wenn beide Nohup-Prozesse sein und im Hintergrund ausgeführt werden sollen?
shell
process
background-process
nohup
user33767
quelle
quelle
Antworten:
Du hast beides gemacht
cmd1
und bistcmd2
parallel gelaufen. Sie sagten: „Starten Sie cmd2 im Hintergrund und trennen Sie alle Verknüpfungen damit. Starten Sie cmd1 im Hintergrund und trennen Sie alle Verknüpfungen damit. “ Sie meinten: „Starten Sie cmd2 im Hintergrund; Wenn es fertig ist, starte cmd1 (auch im Hintergrund). “ Da mit der Hintergrundaufgabe keine Zuordnung mehr besteht, müssen Sie eine Hintergrundaufgabe erstellen, die cmd2 und dann cmd1 ausführt. Dies istcmd2; cmd1
(oder besser gesagtcmd2 && cmd1
, um cmd1 nur auszuführen, wenn cmd2 erfolgreich ist), und Sie müssen angeben, dassnohup
dafür eine Shell gestartet werden soll, die im Hintergrund ausgeführt wird.quelle
Wenn es Ihnen nichts ausmacht, nohup nicht zu verwenden:
quelle
Verwenden Sie einfach:
quelle
Lassen Sie uns wissen, was genau Sie mit cmd2 und cmd1 machen. Dies hängt von der Art der Aufgabe und der Ausgabe ab, die Sie von Ihrem Befehl erwarten. Wenn Sie Probleme haben, zweimal die Eingabetaste mit dem Befehl zu drücken, kann dies in meinem Beitrag herausgefunden werden
Sie können auch auf diesem Weg gehen
Siehe den unten angegebenen Screenshot. Hier verwende ich 3 Befehle und alle werden einzeln nacheinander ausgeführt. Ich habe Backticks für diese Aufgabe verwendet. Im Screenshot können Sie auch den Datums- und Zeitstempel beobachten. Der Befehl sleep hat 60 Sekunden, daher wird mein nächster Befehl nach 60 Sekunden erfolgreich ausgeführt. Ich habe den Befehl jobs verwendet, um zu überprüfen, ob ein Befehl noch im Hintergrund ausgeführt wird. Hier nicht. von Jobs, die Sie sehen können, ist 1.
Dieser Screenshot ist auch unter diesem Link verfügbar , wenn er nicht sichtbar ist
quelle