Como escrever um script bashing

0

Eu criei um programa que requer uma seqüência de instruções de linha de comando para capturar novas informações e atualizar os bancos de dados.

Existe uma maneira de automatizar este processo para que eu não precise digitar todas essas coisas no terminal toda vez que eu me sentar? Talvez seja necessário que os primeiros 3 passos sejam executados a cada hora e o 4º passo às 2 da manhã, já que pode levar muito tempo para ser concluído.

Etapa 1: no terminal:

...Documents/dota2/dotaapi2/ python match_scraper.py 

Etapa 2: no terminal

 psql dota2apidb
 update games set online=1 where online is null;

Etapa 3: no terminal:

...Documents/dota2/gosugamers/gosugamers/spiders/ scrapy crawl dota

Etapa 4: No terminal: (executar uma vez apenas às 2h)

...Documents/dota2/dotaapi2/ python gosu_merge.py

...Documents/dota2/dotaapi2/ python unticketed.py
    
por andrewrmunro 26.04.2016 / 22:42

2 respostas

1

Uma solução pode ser configurar o cronjobs para bloquear / desbloquear o diretório do jogo. Para fazer isso, siga as etapas abaixo.

  1. Certifique-se de que o cron-daemon esteja instalado

    sudo apt-get install cron
    
  2. Configurando o cronjob para ser executado em root

Comece a editar o cronjob emitindo o seguinte comando:

sudo crontab -e

Adicione as seguintes linhas ao editor:

00 */1 * * * ...Documents/dota2/dotaapi2/ python match_scraper.py
01 */1 * * * psql dota2apidb
02 */1 * * * update games set online=1 where online is null;
03 */1 * * * ...Documents/dota2/gosugamers/gosugamers/spiders/ scrapy crawl dota
04 02 * * * ...Documents/dota2/dotaapi2/ python gosu_merge.py
05 02 * * * ...Documents/dota2/dotaapi2/ python unticketed.py

(Só para deixar claro que você tem que usar os comandos e caminhos apropriados, talvez seja necessário copiar alguns dos scripts preparados do bash para que você possa reduzir a quantidade de crons em execução)

    
por Videonauth 26.04.2016 / 22:55
0

coloque as etapas 1,2,3 no script1.sh Coloque o passo 4 em script2.sh

Em seguida, configure cron para que o usuário apropriado execute os scripts de acordo com sua programação:

minute (0-59), hour (0-23, 0 = midnight), day (1-31), month (1-12), weekday (0-6, 0 = Sunday), command

    01 * * * * /usr/bin/directory/script1.sh
    30 2 * * * /usr/bin/directory/script2.sh

script1.sh será executado no minuto 01 se a cada hora de cada dia, enquanto o script2.sh será executado no minuto 30 da hora 0200 todos os dias.

    
por neofug 26.04.2016 / 23:04