2015-11-17 50 views
0

我使用livestreamer記錄定期現場直播,視頻從YouTube如下Livestreamer - 調度記錄和Debian的Linux發行版變種

livestreamer <youtube-live-url> best -o out_file.mp4 

的記錄需要盡一切晚上8點至晚上10點每星期四。

我不能總是在這些時間在電腦上。

我在考慮用crontab-e在給定的時間,星期四晚上8點用上面的命令開始錄音,這很容易。

流必須在當天晚上10點用CTRL + C停止。 殺死進程將不會工作,因爲流不會被寫入文件。直播流必須用CTRL + C關閉。

問題是我不知道如何將PID分配給初始進程,然後將CTRL + C發送到同一進程,所有這些都是從crontab完成的,以關閉流並將文件寫出。

任何任何想法。也許Crontab是或不是解決這個問題的最好方法。

一個特定的工作配方,如果任何人有一個有效的錄音,請參閱。

回答

1

看看timeout。它允許你運行一個命令並在給定的時間量之後用一個特定的kill信號終止它。

你可以在你的cron命令中用2小時後用ctrl-c(SIGINT)來停止livestreamer。

您應該在cron命令中使用超時和livestreamer的完整路徑。你可以用找到這些:

$ which timeout 
/usr/bin/timeout 

$ which livestreamer 
/usr/local/bin/livestreamer 

要錄製兩個小時的細分cron命令是:

/usr/bin/timeout -s SIGINT 2h /usr/local/bin/livestreamer <url> /path/to/out.mp4 
+0

喜@ Z0n3r對於一個簡短的測試我使用'12 23 * * *超時-s SIGINT 1m livestreamer https://www.youtube.com/watch?v=y60wDzZt8yg 240p -o live8.mp4'。這是行不通的。我認爲,因爲crontab在啓動後會釋放進程,並且無法識別正確的進程以使用SIGINT關閉進程。有任何想法嗎? (ps從終端,外部crontab,'超時-s SIGINT 1m livestreamer https://www.youtube.com/watch?v=y60wDzZt8yg 240p -o live8.mp4'工作很好) – Kes

+0

@Kes嘗試添加完整路徑你的cron命令中都有timeout和livestreamer。使用'哪個超時'和'哪個livestreamer'來驗證這些,並將你的cron命令改爲例如:/ usr/bin/timeout -s SIGINT 1m/usr/local/bin/livestreamer https://www.youtube.com/watch ?v = y60wDzZt8yg 240p -o live8.mp4 –

+0

謝謝。這很好用! :) – Kes