2016-04-25 4 views
-1

バックグラウンドで複数の単一行コマンドを実行しようとしています(exec())。私のスクリプトはビデオに透かしを入れて元のビデオを削除し、透かし入りのビデオの名前を元の名前に変更します。私はバックグラウンドでコード全体を実行したい。私はround()とcurly {}のブレースを試しましたが、私がバックグラウンドで実行しようとしている私のコードは以下の最後では失敗しました。バックグラウンドでの複数のbashコマンド

(/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) & 
+1

エラーが発生しましたか? – Quinn

+1

バックグラウンドでの実行にはどのような性質がありますか? –

+0

パスを確認してください。 '/ video_watermarked.mp4'と' video_watermarked.mp4'の両方を使用しています(先行するスラッシュはありません) – Tibrogargan

答えて

-1

標準出力にアクセスできない場合、ffmpegは自動的に中断します。次の2つの選択肢があり


nohup /usr/bin/ffmpeg ...はあなたのためのリダイレクトの世話をし、

nohup.outと呼ばれるファイルにはffmpegの出力を配置またはEXECためにあなたの引数で閉じ括弧の後に2>&1>/dev/nullを追加します()。これは標準出力と標準エラーの両方を/ dev/nullに送信します。

-1

あなたのコマンドは正常です。おそらく、コンソールに出力されているバックグラウンドコマンドが好きではないでしょうか?

:より良い、あなたは背景がいくつかのログファイルに出力を追加するためのコマンド強制することが

(/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 & 

または:この場合、出力は(コマンドの終わりに&>を/ 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 & 
+0

FYI: 'ffmpeg' *は出力をリダイレクトしないと、バックグラウンドで実行されません。シェルからは、フォアグラウンドに再び入るまで中断されます。 –