Job-Control

現在批次不接受輸入文件的替換隊列?

  • October 25, 2014

背景

我在一家研究所工作,並且很長時間使用該batch命令將作業隊列送出到我們的機器。但是,最近的更新將該batch命令更改為符合 POSIX 標準,其結果是它不再需要輸入文件。因此,我將不得不在at>提示符下手動輸入每個命令,而不是重用舊的隊列輸入文件並在需要時進行細微更改。這相當耗時,而且考慮到batch無論如何處理工作的能力,與自己開始工作相比,這幾乎是浪費時間。

問題

我能找到的唯一替換隊列要麼過於昂貴,要麼無法勝任。我正在尋找一個簡單地執行按時間順序給出的作業的隊列;沒有優先隊列或類似的東西。現在有哪些可用的隊列batch功能不同?

expect(and pexpect) 旨在自動與需要“互動式”輸入的程序進行互動。 expect允許自動啟動程序、等待其提示、發送響應、等待另一個提示等。

這是一個簡單的期望腳本範例,它啟動batch並創建一個作業以供其調度。它開始batch,等待提示,創建作業,等待提示,發送 control-D ( \004),等待batch以確認作業創建來響應,例如job 271 at Sat Oct 25 14:31:00 2014,然後等待一秒鐘 forbatch完成並退出:

#!/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從標準輸入讀取和排隊作業的腳本。或者,可以創建一個 shell/sed/awk/python 腳本來從標準輸入讀取輸入並在輸出上編寫一個期望腳本。

引用自:https://unix.stackexchange.com/questions/164075