バッチ処理は入力ファイルを許可しないため、キューを変更する必要がありますか?

バッチ処理は入力ファイルを許可しないため、キューを変更する必要がありますか?

背景

私は研究機関で働いており、batch長い間このコマンドを使用して作業キューをコンピュータに送信してきました。ただし、最近の更新により、batchこのコマンドがPOSIX仕様に変更され、入力ファイルが不要になりました。したがって、at>以前のキュー入力ファイルを再利用し、必要に応じて小さな変更を加えるのではなく、プロンプトで各コマンドを手動で入力する必要があります。これはかなり時間がかかることであり、batchとにかくそれを処理することがどれほどひどいことであるかを考えると、自分で仕事を始めるよりも時間の無駄に近いです。

質問

私が見つけることができる唯一の代替キューは高価で動作しませんでした。私は与えられたタスクを時系列で実行するキューを探しています。優先順位キューなどはありません。今どのようなキューがbatch動作しますか?

ベストアンサー1

expect(およびpexpect)は、「対話型」入力を必要とするプログラムと自動的にやり取りするように設計されています。 expect自動的にプログラムの起動、プロンプトの待機、応答の送信、他のプロンプトの待機などを許可します。

batch以下は、スケジュールするタスクを開始して生成するExpectスクリプトの簡単な例です。開始しbatch、プロンプトを待ち、ジョブを作成し、プロンプトを待って、 control-D( ) を送信し、ジョブの作成を確認する応答を\004待ちます (例: )。その後、完了するまで1秒待ってから終了します。batchjob 271 at Sat Oct 25 14:31:00 2014batch

#!/usr/bin/expect --

spawn batch
expect "at>"
send "echo Hello from batch\r"
expect "at>"
send "\004"
expect "job"
sleep 1

expect多くの高度な機能があります。プロシージャを作成して変数を操作できます。詳細については、次を参照してください。expectホームページそしてexpectよくある質問。これexpectウィキペディアページ非常に有益です。

まだ試していませんが、expect標準入力から読み込み、ジョブをキューに追加するスクリプトを作成することも可能です。あるいは、入力時にstdinから読み込み、出力時にExpectスクリプトを作成するshell / sed / awk / pythonスクリプトを生成することもできます。

おすすめ記事