如何安排 Bash 脚本在特定时间运行

如何安排 Bash 脚本在特定时间运行

我正在使用代码

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

循环播放.sh文件。有没有办法编辑它,使其每天下午 5 点(CST)开始,然后在晚上 9 点(CST)停止?就像计时器一样,这样它就不会全天候运行,而是像 Windows 上的任务一样自行启动和停止?

答案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 &,然后监视该进程并根据需要冻结/解冻它。

相关内容