Queue uma tarefa em um shell em execução

2

Muitas vezes, inicio um comando de longa execução vinculado a uma CPU, disco, RAM ou conexão com a Internet. Enquanto isso está em execução, acho que quero executar um comando semelhante. Digamos que você baixe algo grande.

Então eu inicio um shell com wget ...1 e deixo ele rodar. Eu poderia abrir outro shell e executar o outro wget ...2 , mas agora eles lutariam pela largura de banda. Quando eu apenas digitar o segundo comando no shell em execução, ele será executado posteriormente, pois wget não é interativo.

Existe uma maneira razoável de fazer isso com Bash ou Fish Shell?

    
por Martin Ueding 26.05.2014 / 19:37

3 respostas

5

Se você já está rodando wget http://first em primeiro plano, você pode pausá-lo com CTRL + z e retorná-lo ao trabalho com outro comando logo após:

fg ; wget http://second

Deve funcionar na maioria dos casos.

Se esse caminho não for aceitável, você deve ir com o arquivo de bloqueio. Ou até mesmo apenas para monitorar o processo via ps (o arquivo de bloqueio é melhor).

    
por 26.05.2014 / 20:42
0

É possível instalar um gerenciamento de fila de tarefas completo, como o HTCondor, e enfileirar os trabalhos lá. No Debian é fácil configurá-lo para um único usuário em uma máquina. Para a maioria dos casos, isso é provavelmente um exagero.

    
por 26.07.2015 / 20:36
0

Você pode encontrar Spooler de Tarefas útil.

Citando a descrição do aplicativo,

Task spooler is a Unix batch system where the tasks spooled run one after the other. The amount of jobs to run at once can be set at any time. Each user in each system has his own job queue. The tasks are run in the correct context (that of enqueue) from any shell/process, and its output/results can be easily watched.

    
por 08.03.2017 / 12:12