Executa e mata um programa bash em um horário agendado

1

Eu preciso executar um programa bash em horários programados (com base na hora local) no meu Ubuntu 16.04. Por exemplo, é disso que eu preciso:

De quinta a quinta-feira, das 10:00 às 18:00 Sexta-feira das 10:00 às 18:00 : bash runme.sh

E uma vez que o clock atingiu o final, kill -9 da execução do programa.

Qual é a melhor maneira de conseguir isso, talvez por meio de um script bash?

    
por Tina J 13.02.2018 / 01:29

1 resposta

1

A maneira mais simples, mas não elegante, de fazer isso é escrever um pequeno monitor de processo.

Digamos que seu monitor tenha o nome monitor.sh , escreva isso dentro dele:

#!/bin/bash

# Runs your runme.sh in background
/location/of/your/runme.sh &

# Gets the PID of runme.sh
RUN_ME_PID=$!

# Sleeps how much time you need:
sleep 8h 

# Kills the process:
kill -9 $RUN_ME_PID

Como é um trabalho agendado, use cron para iniciá-lo para você:

Anexe isso no final de /etc/crontab (como root ):

# m h dom mon dow user  command
 00 10 *   *  1-4 tina  /location/of/your/monitor.sh > /your/output.log

Faça o mesmo com o lote de sexta-feira, mas altere seu monitor.sh de acordo com suas necessidades.

Não se esqueça de marcar monitor.sh como executável:

$ chmod +x monitor.sh

Para mais informações, consulte o cron man-pages ou alguns exemplos úteis aqui

    
por Girol 13.02.2018 / 16:25