Como agendar um script bash para ser executado em um determinado momento

0

Estou usando o código

#!/bin/bash
while :; do
    ffmpeg -re -i "input" output.mp4
done

para fazer um loop no arquivo .sh . Existe uma maneira de editar isso para que ele começa às 5pm CST todos os dias e, em seguida, pára às 21:00 CST? Como um temporizador, por isso não funciona 24 horas por dia, 7 dias por semana, mas começa e pára como uma tarefa no Windows?

    
por WEB X 04.03.2017 / 04:43

1 resposta

1

Tente isto:

#!/bin/bash

work() {
    # put your job here e.g.
    ffmpeg -re -i "input" output.mp4
}

echo "Launching background job..."
work &
workPID=$!
RUNNING=true

while true; do
    # If no child process, then exit
    [ $(pgrep -c -P$$) -eq 0 ] && echo "All done" && exit
    HOUR="$(date +'%H')"
    if [ $HOUR -ge 17 -a $HOUR -lt 21 ] ; then
        if [ "$RUNNING" == false ]; then
            echo "Start work..."
            kill -CONT $workPID
            RUNNING=true
        fi
    else
        if [ "$RUNNING" == true ]; then
            echo "Stop work..."
            kill -TSTP $workPID
            RUNNING=false
        fi
    fi
    sleep 2
done

O script inicia o trabalho como um processo filho com work & , monitora esse processo e congela / descongela conforme necessário.

    
por 04.03.2017 / 09:48

Tags