일괄 처리에서는 입력 파일을 허용하지 않으므로 대기열을 변경해야 합니까?

일괄 처리에서는 입력 파일을 허용하지 않으므로 대기열을 변경해야 합니까?

배경

저는 연구 기관에서 일하고 있으며 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 스크립트를 생성할 수 있습니다.

관련 정보