后台有多个bash命令

时间:2016-04-25 17:15:28

标签: linux bash

我正在尝试从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) & 

2 个答案:

答案 0 :(得分:-1)

你的命令似乎很好。也许你不喜欢后台命令仍然输出到控制台?在这种情况下,重定向输出(在命令结尾处注意&> / 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 &

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

__int64

答案 1 :(得分:-1)

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

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

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