Я использую код

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

зациклить файл .sh . Есть ли способ отредактировать это так, чтобы оно начиналось в 17:00 CST каждый день, а затем заканчивалось в 9:00 CST? Как таймер, поэтому он не запускается 24/7, но запускается и останавливается как задача в Windows?

1 ответ1

1

Попробуй это:

#!/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

Сценарий запускает задание как дочерний процесс с work & , затем отслеживает этот процесс и замораживает / размораживает его по мере необходимости.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .