Estou compilando uma lista enorme de comandos (todos fazendo a mesma coisa) que quero executar, mas como leva muito tempo para compilar essa lista, gostaria que a execução começasse antes de terminar (a execução de cada comando normalmente leva mais do que criar outra, então não há risco real de a lista secar).
A maneira normal de executar uma lista de comandos é escrever um script de shell listando os comandos, mas quando inicio a execução de um script não consigo mais adicioná-lo.
A forma que encontrei até agora é colocar os comandos command.list
e ter parallel --jobs 1 --line-buffer :::: command.list
, mas como envolve usar parallel
(estou usando GNU paralelo, não sei se vai funcionar com o programa em more-utils) para não- execução paralela de coisas, acho que é um pouco de abuso de parallel
.
Existe uma maneira mais simples de fazer isso? Algo que rastreie quais comandos foram executados no caso de eu estragar alguma coisa e a lista acabar, seria bom.
De: https://www.gnu.org/software/parallel/man.html#example-gnu-parallel-as-queue-system-batch-manager
Isso lhe dará um registro (my.log) de quais trabalhos foram concluídos.
GNU Parallel versão 20220222 só produzirá o trabalho n (e o adicionará a
my.log
) quando o trabalho n+1 tiver sido adicionado. Se isso for inaceitável, basta adicionar outro trabalho fictício:O comportamento é ligeiramente diferente nas versões mais antigas.