Como fazer uma tarefa agendada com base em um tempo de criação de arquivo?

0

O supercomputador que eu executo minha análise usa o SGE para fazer o gerenciamento de tarefas e exige que cada duração de trabalho não seja maior que 24 horas. E esse recurso está me causando muita dor de cabeça.

Infelizmente, fui solicitado a usar o mecanismo de ponto de verificação para gerar resultados e reenviar o script qsub myJobScript . Por parte do programa, não é difícil para mim enviar um arquivo temporário quando o horário do relógio chegar às 23:30:00 (eu dou meia hora à operação de IO), digamos que o nome do arquivo de saída se chame 1.00137/U e 1.00137/p , etc.
Observação: quando você envia um trabalho, nunca sabe quando vai começar. mas tem um arquivo de log em minha pasta quando é iniciado.

Então, minha pergunta é como usar os scripts crontab ou at ou bash para enviar meu trabalho automaticamente quando "novos arquivos" forem criados e detectados? Alguma idéia?

    
por Daniel 11.12.2012 / 16:56

1 resposta

1

Execute um script simples com cron a cada 5 minutos. Seu crontab pode procurar, por exemplo assim:

*/5 * * * *  /path/to/your/script

pseudocódigo de script:

IF (lockfile exists) { exit }
create lockfile
IF (old job has not finished yet) { 
    remove lockfile
    exit
}
IF (new job has already been queued) {
    remove lockfile
    exit
}
schedule new task
remove lockfile

Veja Corrigir o bloqueio em scripts de shell? para saber como bloquear corretamente ( como livre de condições de corrida).

    
por 11.12.2012 / 17:37