助ける! 14時に実行を「終了」/停止する必要がある単純なbashスクリプトがありますが、動作しません。アドバイス、提案、アドバイスなど何かありましたら、とても感謝します!よろしくお願いします!
#!/bin/bash
while :
do
if [ `date +%H` -ge 14 ]; then
exit
fi
ffmpeg -rtsp_transport tcp -i rtsp://login:[email protected]:554/11 -metadata title="Live Cam" -vcodec copy -acodec aac -ac 2 -f flv rtmp://a.rtmp.youtube.com/live2/key
sleep 10
done
すべてがうまく機能しますが、予想通り午後2時に終了するのではなく、24時間を通して実行され続けます。実際には1日10時間実行しようとしましたが、cronジョブから始めて、スクリプト自体で「if then」ステートメントで停止する以外には何もわかりませんでした。
答え1
ここでは、ffmpegの前に「echo」を挿入し、終了する前に別の行に「echoexiting ...」を挿入してから、-geと-leを交互に使用して両方のブランチをテストしましたが、完全に機能しているようです。
私の考えでは、次のようにスクリプトを改善する必要があるようです。
#!/bin/bash
while :
do
if [ `date +%H` -ge 14 ]; then
exit
fi
ffmpeg -rtsp_transport tcp -i rtsp://login:[email protected]:554/11 -metadata title="Live Cam" -vcodec copy -acodec aac -ac 2 -f flv rtmp://a.rtmp.youtube.com/live2/key &
pid_of_ffmpeg=$!
sleep 10
kill -9 $pid_of_ffmpeg
done
10秒後にffmpegを無慈悲に終了します。 (もちろん、時間を変更したり%H -gt 14以降に終了したい場合は、ffmpegを起動した後にメインループと同様のループを実行できます)。