我创建了一个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
如上所示,我在本地服务器后台使用4转换,我正在使用等待PID来检查会话是否完成。
我的问题是很晚才转换…因此,我考虑通过SSH在本地服务器上转换一个转换,在不同的远程服务器上转换另外三个转换例子:
ssh user@192.168.1.1 "nohup ffmpeg -i "$c1" -vf "$crop_value1" -b 1800k "/home/Cropped/""$name1"_cropped.mp4"" > crop1.txt &"
我的问题是执行远程命令后如何获得远程PID并使用PID等待选项为所有远程连接。
将ssh
命令置于后台,而不是远程命令:
ssh user@192.168.1.1 "nohup ffmpeg -i "$c1" -vf "$crop_value1" -b 1800k
"/home/Cropped/""$name1"_cropped.mp4"" > crop1.txt" &
PID1=$!
顺便说一句,您不需要为每个后台进程都使用wait
命令。如果不带参数运行wait
,它将等待所有后台进程。