背景
私は研究機関で働いており、batch
長い間このコマンドを使用して作業キューをコンピュータに送信してきました。ただし、最近の更新により、batch
このコマンドがPOSIX仕様に変更され、入力ファイルが不要になりました。したがって、at>
以前のキュー入力ファイルを再利用し、必要に応じて小さな変更を加えるのではなく、プロンプトで各コマンドを手動で入力する必要があります。これはかなり時間がかかることであり、batch
とにかくそれを処理することがどれほどひどいことであるかを考えると、自分で仕事を始めるよりも時間の無駄に近いです。
質問
私が見つけることができる唯一の代替キューは高価で動作しませんでした。私は与えられたタスクを時系列で実行するキューを探しています。優先順位キューなどはありません。今どのようなキューがbatch
動作しますか?
答え1
expect
(およびpexpect
)は、「対話型」入力を必要とするプログラムと自動的にやり取りするように設計されています。 expect
自動的にプログラムの起動、プロンプトの待機、応答の送信、他のプロンプトの待機などを許可します。
batch
以下は、スケジュールするタスクを開始して生成するExpectスクリプトの簡単な例です。開始しbatch
、プロンプトを待ち、ジョブを作成し、プロンプトを待って、 control-D( ) を送信し、ジョブの作成を確認する応答を\004
待ちます (例: )。その後、完了するまで1秒待ってから終了します。batch
job 271 at Sat Oct 25 14:31:00 2014
batch
#!/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スクリプトを生成することもできます。