我正在嘗試在遠程服務器上安排作業。我希望根據當前服務器時間安排一分鐘,或者在服務器上運行上一個計劃作業的服務器時間一分鐘。這樣,沒有兩個作業同時運行(並且因此避免了競爭條件)。工作安排與'在`。 「EOF:未找到」
作業調度是通過遠程(linux)服務器上的at
命令完成的。我不得不使用at
,因爲我在連接到相同服務器的幾臺主機上運行一系列複雜的仿真以請求進行下一次仿真(爲簡潔起見,此部分已從我的問題中省略)。
我遇到了試圖安排作業在最後一次預定作業後一分鐘運行的問題(或者從現在起,如果沒有預定作業,現在需要一分鐘)。我的調度腳本目前看起來是這樣的:
minute=`atq | sort -t" " -k1 -nr | head -n1 | cut -d' ' -f4 | cut -d":" -f1,2`
curr=`date | cut -d' ' -f4 | cut -d':' -f1,2`
# the 'python -c" prints the correct scheduling time to stdout
cat <<EOF | at `python -c "import sys; hour,minute=map(int,max(sys.argv[1:]).split(':')); minute += 1; hour, minute = [(hour,minute), ((hour+1)%24,(minute+2)%60)][minute>=60]; print '%d:%02d'%(hour, minute)" "$minute" "$curr"`
python path/to/somescript "$1"
EOF
然而,這個劇本,我得到以下錯誤:
somescript: 8: EOF: not found
但是,如果我硬編碼如下時,該錯誤會消失,調度收益預期:
minute=`atq | sort -t" " -k1 -nr | head -n1 | cut -d' ' -f4 | cut -d":" -f1,2`
curr=`date | cut -d' ' -f4 | cut -d':' -f1,2`
cat <<EOF | at 16:48 # or whatever other time
python path/to/somescript "$1"
EOF
我會很感激就如何爲我的整個設置去瘋狂,因爲這錯誤的結果修正這個錯誤的任何幫助。
謝謝
+1。不知道'at'可以這樣使用。 :) – inspectorG4dget