linux - Bash Shell 脚本远程后台处理

标签 linux bash shell video ffmpeg

我已经创建了一个 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,它会等待所有后台进程。

关于linux - Bash Shell 脚本远程后台处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30395816/

相关文章:

linux - 在 Windows 中像 RDP 一样访问 VPS linux 主机

javascript - 如何使用 node.js 获取系统统计信息

bash - 检查文件是否有给定的列数

linux - sed 命令行

linux - 安装 plpythonu 时出错(postresql 和 linux)

linux - Linux 如何在 x86-64 中支持超过 512GB 的虚拟地址范围?

Linux 发行版 info/man/doc/etc 来源

php - 如何在终端中使用 inotify-tools 获取递归目录路径

linux - 如何执行jar文件中的.sh文件

shell - shell脚本中的$@和$*有什么区别?