Fila de substituição agora que o lote não aceita arquivos de entrada?

1

Plano de fundo

Eu trabalho em um instituto de pesquisa e há muito uso o comando batch para enviar filas de trabalho para nossas máquinas. No entanto, uma atualização recente alterou o comando batch para ser compatível com POSIX, o resultado é que ele não recebe mais arquivos de entrada. Assim, eu teria que inserir manualmente cada comando no prompt at> , em vez de reutilizar um arquivo de entrada de fila antigo e fazer pequenas alterações onde necessário. Isso consome muito tempo, e considerando o quão terrivelmente batch lida com empregos de qualquer maneira, é quase um desperdício de tempo ao invés de apenas começar os trabalhos eu mesmo.

O problema

As únicas filas de substituição que consegui encontrar são proibitivamente caras ou não fazem o trabalho. Eu estou procurando por uma fila que simplesmente executa os trabalhos que são dados em ordem temporal; sem filas de prioridade ou qualquer coisa assim. Quais filas estão disponíveis agora que batch não funciona da mesma maneira?

    
por Jonathan Landrum 24.10.2014 / 22:46

1 resposta

2

expect (e pexpect ) foram projetados para automatizar a interação com programas que desejam entradas "interativas". expect permite automatizar o início de um programa, aguardar seu prompt, enviar uma resposta, aguardar outro prompt, etc.

Este é um exemplo simples de um script de espera que inicia batch e cria um trabalho para agendar. Inicia batch , aguarda um prompt, cria um job, aguarda um prompt, envia um control-D ( batch4 ), aguarda que job 271 at Sat Oct 25 14:31:00 2014 responda com a confirmação da criação do job, como batch e em seguida, aguarda um segundo para que expect seja concluído e saia:

#!/usr/bin/expect --

spawn batch
expect "at>"
send "echo Hello from batch\r"
expect "at>"
send "
#!/usr/bin/expect --

spawn batch
expect "at>"
send "echo Hello from batch\r"
expect "at>"
send "%pre%4"
expect "job"
sleep 1
4" expect "job" sleep 1

expect tem muitos recursos avançados. Você pode criar procedimentos e manipular variáveis. Para mais informações, consulte a expect homepage e o expect FAQ . A expect página wikipedia também é muito informativa.

Ainda não experimentei, mas talvez seja possível criar um script %code% que leia as tarefas stdin e filas. Como alternativa, pode-se criar um script shell / sed / awk / python para ler a partir de entrada stdin e escrever um script esperado na saída.

    
por 25.10.2014 / 23:48