11 Stimmen

Linux: Wie kann man einige Aufträge im Hintergrund in eine Warteschlange stellen?

Hier ist die Funktionalität, die ich suche (und noch nicht ganz gefunden habe):

Ich habe x Prozesse, die ich sequentiell ausführen möchte. Einige von ihnen könnten recht zeitaufwendig sein.

Ich möchte, dass diese Prozesse im Hintergrund meiner Shell laufen.

Ich kenne nohup, aber es scheint nicht perfekt zu funktionieren...angenommen, Job1 ist ein zeitaufwändiger Job, wenn ich ctrl+c aus der leeren Zeile, die ich nach nohup job1 && job2 && job3 & erhalte, dann werden Job2 und Job3 nicht ausgeführt, und Job1 könnte oder könnte nicht ausgeführt werden, je nachdem, wie lange ich nohup laufen lasse.

Gibt es eine Möglichkeit, die von mir gewünschte Funktionalität zu erhalten? Ich bin mit einem Linux-Server per SSH verbunden. Als Bonus würde ich es begrüßen, wenn die Aufträge in der Warteschlange auch dann weiterlaufen würden, wenn ich die Verbindung beende.

Vielen Dank für Ihre Hilfe.

EDIT: Ein kleiner Nachtrag zur Frage: Wenn ich ein Shell-Skript mit drei exec-Anweisungen habe

AUSFÜHRUNG BIGTHING exec smallthing Ausführung smallthing

Wird es auf jeden Fall fortlaufend sein? Und gibt es eine Möglichkeit, diese alle in eine exec-Zeile zu verpacken, um die gleiche Funktionalität zu erhalten?

d.h. Ausführung BIGTHING & smallthing & smallthing oder && oder ähnliches

0voto

user562374 Punkte 3752

Um es von der Shell zu lösen (Aufgaben, die gerade mit & sind Gegenstand von Hütchenspielen), verwenden

setid foo

-2voto

yossi Punkte 12360

Setzen Sie nach Ihrem Befehl ein &

z.B. eine ausführbare Datei namens foo ausführen:

./foo &

und es läuft auch weiter, wenn Sie Ihre ssh-Verbindung beenden.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X