- Um utilitário para implementar um sistema leve de fila de tarefas que funciona sem configuração nem daemon
- Suporta Linux/macOS - pode ser executado em sistemas compatíveis com POSIX com suporte a flock(2)
- Suporte a enfileiramento temporário de tarefas via linha de comando (ad-hoc queuing)
- Adequado para tarefas sequenciais como builds com Makefile, download de arquivos e execução de benchmarks
- Também pode ser usado como alternativa ao
nohup
- A ordem das tarefas é rigorosamente garantida por meio de sincronização baseada em timestamps em ms
- Cria
TIMESTAMP.PID para cada processo e aplica flock (bloqueio de arquivo)
- Quando os flock anteriores são desbloqueados, a próxima tarefa é iniciada
- Como a sincronização é feita no nível do sistema de arquivos, não é necessário polling
- Ao adicionar uma tarefa no formato
nq CMDLINE..., o ID da tarefa é exibido e ela é executada em segundo plano
- STDOUT/STDERR são redirecionados para um arquivo de log
- O bit de execução (
+x) do arquivo de log permite distinguir visualmente o estado da tarefa
- A extensão do nome do arquivo de log é composta pelo PID, facilitando o gerenciamento das tarefas
- Antes da execução, usa o PID do
nq; depois da execução, muda para o PID real da tarefa
- É possível reexecutar a tarefa executando o arquivo de log como se fosse um script shell
Diferenças em relação a at, batch e task-spooler
at
Ferramenta para executar tarefas em um horário especificado
Executa comandos no horário agendado com base no relógio do sistema e é usada principalmente para tarefas agendadas pontuais
batch
Executa tarefas quando a carga do sistema (load average) está baixa
Seu objetivo é o controle de execução baseado em carga, e não agendamento, sendo gerenciado por um daemon
task-spooler
Inicia automaticamente um daemon que gerencia a fila para oferecer suporte a processamento sequencial ou paralelo de tarefas
Permite definir o número máximo de tarefas executadas simultaneamente
É possível configurar filas diferentes por terminal, e o estado de cada fila pode ser consultado por comando
nq
Funciona sem daemon e gerencia a fila apenas com flock (bloqueio de sistema de arquivos) no nível de diretório
Não considera carga do sistema nem horário agendado; apenas garante a ordem das tarefas
Os logs da fila podem ser acompanhados em tempo real com nqtail
Como cada diretório funciona como uma fila independente, é possível operar várias filas separadas usando a variável de ambiente $NQDIR
2 comentários
O estilo do código é tão antigo, no estilo do Sourceforge, que eu até achei que tinha voltado no tempo kkk
Comparado à época do Sourceforge, eu ainda sou um desenvolvedor bem novato, então fiquei pensando “o que isso quer dizer?”. Mas quando vi a quebra de linha entre o tipo de retorno da função e o nome, acabei entendendo na hora o.o
Será que há mais algum estilo de código antigo aparecendo nesse código?