Die Lösungen von Brad und Mankoff sind gute Vorschläge. Eine andere Kombination, die einer Kombination aus beiden ähnelt, wäre die Verwendung von GNU Screen zur Implementierung Ihrer Warteschlange. Dies hat den Vorteil, dass es im Hintergrund ausgeführt werden kann, Sie können es jederzeit überprüfen und fügt neue Befehle in die Warteschlange ein, die einfach in den Puffer eingefügt werden, der nach dem Beenden des vorherigen Befehls ausgeführt werden soll.
Erster Lauf:
$ screen -d -m -S queue
( Übrigens ist jetzt ein guter Zeitpunkt, um mit einigen fantastischen. screenrc-Dateien zu spielen. )
Daraufhin wird eine Hintergrundbildschirmsitzung für Ihre benannte Warteschlange angezeigt.
Jetzt können Sie beliebig viele Befehle in die Warteschlange stellen:
screen -S queue -X stuff "echo first; sleep 4; echo second^M"
Ich mache oben mehrere Befehle, nur zum Testen. Ihr Anwendungsfall würde wahrscheinlich eher wie folgt aussehen:
screen -S queue -X stuff "echo first^M" screen -S queue -X stuff "echo second^M"
Beachten Sie, dass das "^ M" in meiner Zeile oben eine Möglichkeit ist, eine eingebettete Newline zu erhalten, die später interpretiert wird, nachdem screen sie in Ihre vorhandene Bash-Shell eingefügt hat. Verwenden Sie "CTL-V", um diese Sequenz zu erhalten.
Es wäre ziemlich einfach, einige einfache Shell-Skripte zu erstellen, um dies zu automatisieren und Befehle in die Warteschlange zu stellen. Immer dann, wenn Sie den Status Ihrer Hintergrundwarteschlange überprüfen möchten, verbinden Sie sich erneut über:
screen -S queue -r
Technisch müssen Sie nicht einmal Ihre Bildschirmsitzung benennen, und es wird gut funktionieren, aber wenn Sie erst einmal daran interessiert sind, werden Sie sowieso die ganze Zeit laufen lassen wollen. ;-)
Wenn Sie dies tun, können Sie natürlich auch eines der aktuellen Fenster "Warteschlange" nennen und Folgendes verwenden:
screen -S queue -p queue -X stuff "command"