繁体   English   中英

后台的多个 bash 命令

[英]Multiple bash commands in background

我正在尝试从 php exec()在后台执行多个单行命令。 我的脚本给视频加水印并删除原始视频并将带水印的视频重命名为原始名称。 我想在后台运行整个代码。 我已经尝试过圆 () 和花括号 {} 但最终失败了下面是我试图在后台运行的代码。

(/usr/bin/ffmpeg -i video.mp4 -i watermark.png -filter_complex 'overlay=10:10' video_watermarked.mp4 && rm -rf video.mp4 && mv video_watermarked.mp4 video.mp4) & 

你的命令看起来不错。 也许你不喜欢后台命令仍然输出到控制台? 在这种情况下重定向输出(注意&>/dev/null在命令末尾):

(/usr/bin/ffmpeg -i video.mp4 -i watermark.png -filter_complex 'overlay=10:10' /video_watermarked.mp4 && rm -rf video.mp4 && mv video_watermarked.mp4 video.mp4) &>/dev/null & 

或者更好的是,您可以强制后台命令将其输出附加到某个日志文件:

(/usr/bin/ffmpeg -i video.mp4 -i watermark.png -filter_complex 'overlay=10:10' /video_watermarked.mp4 && rm -rf video.mp4 && mv video_watermarked.mp4 video.mp4) &>>/home/$USER/watermarking.log &

如果 ffmpeg 无法访问标准输出,它将自动挂起。

你有两个选择:
nohup /usr/bin/ffmpeg ...将为您处理重定向,并将 ffmpeg 的输出放在名为 nohup.out 的文件中

或者在 exec() 的参数中的右括号后添加2>&1>/dev/null 这会将标准输出和标准错误发送到 /dev/null。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM