123 lines
3.1 KiB
Bash
Executable File
123 lines
3.1 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
i=0
|
|
|
|
# Submissoes é o diretorio de entrada. Dentro dele só pode haver subdiretorios com arquivos submetidos
|
|
# Para cada subdiretorio em submissoes
|
|
|
|
for diretorio in questoesseparadas/*
|
|
|
|
do
|
|
|
|
|
|
for subdiretorio in $diretorio/*
|
|
|
|
do
|
|
|
|
|
|
|
|
# A existência do arquivo sucesso.txt indica que o processo de rodar foi finalizado
|
|
# Só roda se houver makefile e este nao tiver sido atualizado nos ultimos dois dias
|
|
|
|
if [ ! -e $subdiretorio/sucesso.txt ]
|
|
then
|
|
if [ -e $subdiretorio/makefile ]
|
|
|
|
then
|
|
|
|
|
|
# Se o arquivosaida nao existir, x=1>0 ==> pode rodar o avaliador dinamico
|
|
x=1
|
|
if [ -e $subdiretorio/arquivosaida ]
|
|
then
|
|
# verifica se arquivosaida sofreu modificacoes nas ultimas 3 horas ==> x>0
|
|
|
|
x=$(find $subdiretorio/arquivosaida -mmin -180 | wc -l)
|
|
|
|
fi
|
|
# Se houve atualizacao do arquivosaida nas ultimas 3 horas ou arquivosaida nao existe
|
|
|
|
if [ $x -gt 0 ]
|
|
then
|
|
|
|
# Tempo máximo para concluir execução (Pode colocar como argumento)
|
|
|
|
TEMPO=5
|
|
|
|
# Tamanho maximo do diretorio
|
|
|
|
TAMMAX=7
|
|
|
|
# Obter tamanho do subdiretorio
|
|
|
|
TAMDIR=$(du -hsm $subdiretorio | awk 'NR == 1 {print $1}')
|
|
|
|
|
|
make -C $subdiretorio &
|
|
|
|
|
|
# Testando se programa está rodando
|
|
|
|
i=0
|
|
|
|
# Aguarda o tempo máximo de execucao. Se ultrapassar esse tempo ou exceder limite de memoria, aborta execucao
|
|
|
|
while [ $i -lt $TEMPO ] && test -n "`fuser -a $subdiretorio`"
|
|
do
|
|
sleep 1
|
|
|
|
i=$((i+1))
|
|
|
|
|
|
done
|
|
|
|
|
|
fuser -k $subdiretorio
|
|
|
|
if [ -e $subdiretorio/arquivosaida ]
|
|
then
|
|
|
|
RESULTSAIDA=$(du -hsm $subdiretorio/arquivosaida | awk 'NR == 1 {print $1}')
|
|
|
|
# Tamanho máximo do arquivo de saida gerado é de 5MB. Pode colocar como argumento de entrada
|
|
|
|
TAMANHO=5
|
|
|
|
if [ $RESULTSAIDA -gt $TAMANHO ]
|
|
then
|
|
|
|
rm -f $subdiretorio/arquivosaida
|
|
|
|
echo " Tempo de execução excedido - Programa em loop!!" > $subdiretorio/arquivosaida
|
|
|
|
else
|
|
echo "OK!" > $subdiretorio/sucesso.txt
|
|
fi
|
|
|
|
else
|
|
|
|
echo " O arquivo de saida nao foi gerado! Erros no exercicio" > $subdiretorio/arquivosaida
|
|
|
|
|
|
fi
|
|
fi
|
|
else
|
|
# Verificar se é diretorio
|
|
|
|
if [ -e $subdiretorio/ ]
|
|
then
|
|
echo "Arquivo makefile não encontrado. A saida do programa não foi gerada" > $subdiretorio/arquivosaida
|
|
fi
|
|
|
|
fi
|
|
fi
|
|
|
|
|
|
done
|
|
|
|
done
|
|
|
|
|
|
|
|
echo "ok!" > confirma.txt
|