Sowohl Brad als auch Mankoffs Lösungen sind gute Vorschläge. Eine andere, die einer Kombination von beiden ähnelt, wäre, GNU Screen zu verwenden, um Ihre Warteschlange zu implementieren. Dies hat den Vorteil, dass es im Hintergrund ausgeführt werden kann, dass Sie es jederzeit überprüfen können und dass beim Einreihen neuer Befehle diese einfach in den Puffer eingefügt werden, damit sie ausgeführt werden, nachdem die vorherigen Befehle beendet wurden.
Erster Lauf:
$ screen -d -m -S queue
( Übrigens , jetzt ist ein guter Zeitpunkt, um mit einigen großartigen .screenrc-Dateien zu spielen. )
Dadurch wird eine Hintergrundbildschirmsitzung für die von Ihnen angegebene Warteschlange erstellt.
Stellen Sie nun so viele Befehle in die Warteschlange, wie Sie möchten:
screen -S queue -X stuff "echo first; sleep 4; echo second^M"
Ich führe oben mehrere Befehle nur zum Testen aus. Ihr Anwendungsfall würde wahrscheinlich eher so 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 neue Zeile zu erhalten, die später interpretiert wird, nachdem der Bildschirm sie in Ihre vorhandene Bash-Shell eingefügt hat. Verwenden Sie "CTL-V", um diese Sequenz abzurufen.
Es wäre ziemlich einfach, einige einfache Shell-Skripte zu erstellen, um dies zu automatisieren und Befehle in die Warteschlange zu stellen. Wann immer Sie den Status Ihrer Hintergrundwarteschlange überprüfen möchten, können Sie eine erneute Verbindung herstellen über:
screen -S queue -r
Technisch gesehen müssen Sie Ihre Bildschirmsitzung nicht einmal benennen, und es funktioniert einwandfrei, aber sobald Sie sich darauf einlassen, möchten Sie sowieso immer eine laufen lassen. ;-)
Wenn Sie dies tun, ist es natürlich auch sinnvoll, eine der aktuellen Windows-Warteschlangen zu benennen und Folgendes zu verwenden:
screen -S queue -p queue -X stuff "command"