BradとMankoffのソリューションは両方とも良い提案です。両方の組み合わせに似ているもう1つの方法は、GNU Screenを使用してキューを実装することです。これには、バックグラウンドで実行できるという利点があり、いつでも確認でき、新しいコマンドをキューに入れると、前のコマンドが終了した後に実行されるようにバッファーに貼り付けられます。
ファーストラン:
$ screen -d -m -S queue
(偶然、素晴らしい。screenrcファイルで遊ぶのに今が良い時間です)
これにより、キューという名前のバックグラウンドスクリーンセッションが生成されます。
ここで、好きなだけコマンドをキューに入れます:
screen -S queue -X stuff "echo first; sleep 4; echo second^M"
私はテストのために上記の複数のコマンドを実行しています。ユースケースはおそらく次のようになります。
screen -S queue -X stuff "echo first^M"
screen -S queue -X stuff "echo second^M"
上記の私の行の「^ M」は、スクリーンが既存のbashシェルにそれを詰め込んだ後に後で解釈される埋め込み改行を取得する方法であることに注意してください。「CTL-V」を使用して、そのシーケンスを取得します。
それを自動化してコマンドをキューに入れるための簡単なシェルスクリプトを作成するのは非常に簡単です。その後、バックグラウンドキューのステータスを確認するたびに、次の方法で再接続します。
screen -S queue -r
技術的には、スクリーンセッションに名前を付ける必要さえなく、それはうまく機能しますが、一度それに夢中になれば、とにかく常に実行中のものを残したいと思うでしょう。;-)
もちろん、それを行う場合、別の良い方法は、現在のウィンドウの1つに「キュー」と名前を付けて使用することです。
screen -S queue -p queue -X stuff "command"