Como executar uma seqüência de scripts bash um de cada vez no Linux?

1

Eu tenho vários scripts bash, ou melhor, um script que precisa ser executado várias vezes.

Este script aceita vários argumentos de linha de comando e faz algo com eles. Eu preciso executar este script várias vezes em seqüência, passando em valores de argumentos diferentes. O problema é que esse script é muito longo e leva muito tempo para ser executado.

Eu quero rodar este script uma vez, com alguns argumentos. Então eu quero rodar este script novamente, passando valores de argumentos diferentes desta vez.

Eu preciso dar meus resultados ao meu chefe pela manhã. Uma solução seria simplesmente executar o script uma vez e depois sentar no computador durante toda a noite, esperando que ele seja concluído e, em seguida, executar o script novamente. Mas a falta de sono não é uma opção para mim.

Existe alguma maneira de automatizar a execução de scripts com valores de argumentos predeterminados? A propósito, eu preciso ver não apenas a saída dos scripts como o resultado final, mas também o script que foi passado para a linha de comando com os argumentos apropriados.

Talvez seja melhor olhar para esta imagem para entender melhor a minha pergunta.

    
por Galaxy 07.05.2016 / 07:19

3 respostas

0

Você precisa de um for loop:

cd ~/Desktop/344/08
for arg in --resources --requesters --errors
do
    echo Starting: ./log_parse.sh "$arg" --day 10-20 --number 10 access_log_Jul95
    ./log_parse.sh "$arg" --day 10-20 --number 10 access_log_Jul95
done

Talvez você queira salvar uma cópia da saída em um arquivo de registro, bem como exibi-lo em uma tela:

cd ~/Desktop/344/08
{
    for arg in --resources --requesters --errors
    do
        echo Starting: ./log_parse.sh "$arg" --day 10-20 --number 10 access_log_Jul95
        ./log_parse.sh "$arg" --day 10-20 --number 10 access_log_Jul95
    done
} 2>&1 | tee output.log

Coloque o código acima em um arquivo chamado, digamos, script.sh . Então, no prompt de comando, execute:

bash ./script.sh
    
por 07.05.2016 / 07:24
0

A maneira mais simples de executar um comando após o outro é apenas usar; Como:

command1 --options;command2 --options;command3 --options

Se você quiser pular comandos em execução se o anterior falhar, faça isso com & &:

 command1 --options && command2 --options && command3 --options

Diferentemente de pipe (|) ou E comercial (&), o ponto-e-vírgula aguarda o término do comando antes da execução do próximo comando.

    
por 31.03.2017 / 12:27
0

Confira o Spooler de Tarefas ( link ) - existem pacotes para o Debian.

Basicamente você pode instalá-lo, depois executar um monte de tsc {script} {arguments} e empilhar o comando em uma fila na qual o spooler trabalha em segundo plano.

    
por 31.03.2017 / 12:32