Como executo um programa X vezes no terminal?
Eu li que tenho que fazer um bin / bash txt, mas não sei como executar isso X vezes.
command-line
user3597989
fonte
fonte
Respostas:
Você pode usar
xargs
eseq
. Geralmente:Por exemplo:
executará o
xdotool click 1
comando 10 vezes.fonte
Abra um terminal e use o seguinte
bash
comando:Com um pouco de verbosidade e atraso de 1s:
fonte
$
. Está lá apenas para indicar um prompt de shell comosylvain@sylvain-ThinkPad-T430s:~$
. Geralmente, o adicionamos às respostas da linha de comando para diferenciar o comando de seus resultados.Isso deve fazer:
onde 10 é o número de vezes para executar o comando
se você precisar criar uma pequena pausa:
Copie o script em um arquivo vazio, substitua
<command to run>
pelo seuxdotool
comando, salve-o comorun_xdotool.sh
, execute-o pelo comando:Como alternativa, você pode torná-lo executável e simplesmente executá-lo
Outra solução: usando a opção de repetição incorporada do xdotool
Como você menciona usá-lo para fazer cliques, o mais fácil pode ser usar
xdotool
a própria opção de repetição interna. O formato é:Para fazer 10 cliques do mouse (botão 1) seguidos, com um segundo de intervalo, o comando é:
fonte
Se você possui o GNU Parallel, você pode executar:
Todos os novos computadores possuem múltiplos núcleos, mas a maioria dos programas é de natureza serial e, portanto, não usa os múltiplos núcleos. No entanto, muitas tarefas são extremamente paralelizáveis:
O GNU Parallel é um paralelizador geral e facilita a execução de trabalhos em paralelo na mesma máquina ou em várias máquinas às quais você tem acesso ssh.
Se você tiver 32 tarefas diferentes que deseja executar em 4 CPUs, uma maneira direta de paralelizar é executar 8 tarefas em cada CPU:
O GNU Parallel gera um novo processo quando se termina - mantendo as CPUs ativas e economizando tempo:
Instalação
Uma instalação pessoal não requer acesso root. Isso pode ser feito em 10 segundos, fazendo o seguinte:
Para outras opções de instalação, consulte http://git.savannah.gnu.org/cgit/parallel.git/tree/README
Saber mais
Veja mais exemplos: http://www.gnu.org/software/parallel/man.html
Assista aos vídeos de introdução: https://www.youtube.com/playlist?list=PL284C9FF2488BC6D1
Percorra o tutorial: http://www.gnu.org/software/parallel/parallel_tutorial.html
Inscreva-se na lista de e-mails para obter suporte: https://lists.gnu.org/mailman/listinfo/parallel
fonte
parallel -N0 doit ::: {1..10}
{1..10}
não funciona em (t) csh / fish / ash, e a{1..10}
construção é limitada pelo comprimento da linha de comando, portanto, isso não funciona: ao{1..1000000000}
passoseq 1000000000
que funcionará bem. Mas para a maioria das situações{1..10}
funcionará como esperado, e eu também uso isso frequentemente.Você pode usar um
for
loop de estilo C que tem a vantagem sobre a versão brace-expansion ({1..5}
) de poder usar variáveis para especificar os pontos finais. Qualquer uma das versões é melhor do que usar um utilitário externo (seq
).Tudo em uma linha:
Ou você pode fazê-lo sem um loop (para este utilitário e função específicos):
fonte
Simplesmente você pode usar o comando watch:
mude x para o tempo em segundos.
Exemplo:
Portanto, o xdotool click 1 será repetido a cada 1 s, encerre-o quando terminar.
fonte