启动程序的新实例,然后终止旧实例



我希望使用 VLC 自动录制 https 音频流。 流有下降的趋势,所以我需要每小时创建一个新的捕获,但为了流畅的编辑,我希望每个实例记录 65 分钟。

我不确定如何编写脚本,以便旧的在新的启动后 5 分钟终止。

我用于捕获的命令是:

vlc https://server.com/live --sout="#duplicate{dst=std{access=file,mux=mp3,dst='/home/ubuntu/test1.mp3'},dst=nodisplay}"

(此外,我想用当前日期时间信息替换"test1",但这是另一个线程。

干净地退出 vlc 比杀死进程更好:

--stop-time=3900(65 * 60(

停止时间
流将在此位置停止(以秒为单位(。

https://wiki.videolan.org/VLC_command-line_help/

其余的可以通过 shell 循环来完成:

while : ; do 
vlc --stop-time=3900 --play-and-exit https://server.com/live --sout="#duplicate{dst=std{access=file,mux=mp3,dst='/home/ubuntu/test1.mp3'},dst=nodisplay}" &
sleep 3600
done

while do : ; vlc &; sleep 3600 done在后台启动一个实例,然后等待 3600 秒,然后永远启动下一个实例(直到按Ctrl+c(。

另一种选择可能是使用 crontab 条目,该条目每整小时启动一个新实例:
crontab -e

0 * * * * vlc --stop-time=3900 --play-and-exit https://server.com/live --sout="#duplicate{dst=std{access=file,mux=mp3,dst='/home/ubuntu/test1.mp3'},dst=nodisplay}" 1>>~/.vlc.dump.log 2>&1

编辑:正如@DaveZachritz所指出的那样,它也需要--play-and-exit

最新更新