Você pode usar o comando de tempo limite:
if timeout 10 ping google.fr > /dev/null
then
echo "process successful"
else
echo "process killed"
fi
mostra process killed
e
if timeout 10 ls /usr/bin | wc -l > /dev/null
then
echo "process successful"
else
echo "process killed"
fi
mostra process successful
. Com base nisto, você poderia executar cada comando usando tal if; then; else; fi
, redirecionar a saída padrão para um arquivo temporário e copiar esse temporário para o arquivo de destino no caso de sucesso, gerando o arquivo de destino no caso de falha.
Como posso matar um processo e ter certeza de que o PID não foi reutilizado poderia ser útil no caso de você não tem tempo limite.