2015-05-22 64 views
0

我創建了一個的Bash shell腳本。隨着我可以裁剪和本地視頻轉換..的Bash shell腳本遠程後臺處理

nohup ffmpeg -i "$c1" -vf "$crop_value1" -b 1800k "/home/Cropped/""$name1"_cropped.mp4"" > crop1.txt & 
PID1=$! 
nohup ffmpeg -i "$c2" -vf "$crop_value2" -b 1800k "/home/Cropped/""$name2"_cropped.mp4"" > crop2.txt & 
PID2=$! 
nohup ffmpeg -i "$c3" -vf "$crop_value3" -b 1800k "/home/Cropped/""$name3"_cropped.mp4"" > crop3.txt & 
PID3=$! 
nohup ffmpeg -i "$c4" -vf "$crop_value4" -b 1800k "/home/Cropped/""$name4"_cropped.mp4"" > crop4.txt & 
PID4=$! 
wait $PID1 
wait $PID2 
wait $PID3 
wait $PID4 

正如上面的代碼顯示IM使用4轉換在後臺在本地服務器和我使用等待PID來檢查是否完成對話。

我的問題是它採取非常晚轉換..所以我思考轉換1種轉換在本地服務器版和另外三個在不同的遠程服務器通過SSH 例子:

ssh [email protected] "nohup ffmpeg -i "$c1" -vf "$crop_value1" -b 1800k "/home/Cropped/""$name1"_cropped.mp4"" > crop1.txt &" 

我的問題是遠程執行後命令如何獲得遠程PID並使用所有遠程連接的PID等待選項。

+0

爲什麼要把句子中的每個單詞都歸於無形? – Barmar

+1

不要在後臺放置遠程命令,只需將'ssh'命令放在後臺即可。 – Barmar

+0

在後臺的SSH命令?我不明白 –

回答

1

ssh命令在後臺,而不是遠程命令:

ssh [email protected] "nohup ffmpeg -i "$c1" -vf "$crop_value1" -b 1800k \ 
    "/home/Cropped/""$name1"_cropped.mp4"" > crop1.txt" & 
PID1=$! 

BTW,你不需要爲每個後臺進程一個wait命令。如果不帶參數運行wait,它將等待所有後臺進程。

+0

我需要等待所有後臺進程完成,所以即時通訊使用PID等待..因爲我的下一個命令需要裁剪視頻作爲輸入 –

+0

這就是它所做的,它等待所有後臺進程完成。 – Barmar