*.gifをfile.pdfに変換すると、システムが停止/停止します。

*.gifをfile.pdfに変換すると、システムが停止/停止します。

ディレクトリに415個のgifファイルがあり、以下を使用して単一のPDFファイルにしようとしています。

convert /path/to/*.gif file.pdf

ただし、これによりシステム全体が中断/停止します。つまり、システムを非常に遅くしてプロセスをCtrl+(終了)する必要があります(これも停止するのに少し時間がかかります)。c

この問題にどのように対処する必要がありますか?これを行うためのより良い/代替メカニズム(コマンド/プログラム/解決方法)はありますか?

注:私はTrisquel GNU / Linux 7.0 LTSを使用してシンプルなデスクトップコンピュータ(3 + 3GHz P4プロセッサと1GBとRAM)で開発しています。このconvertプログラムは、次の組織のメンバーです。イメージマジシャンツールキット。

答え1

多くのメモリを使用しており、スワップが発生する可能性があります。/usr/bin/time -vコマンドの前に簡単なテストを使用すると、5つのファイルに対して実行し、再び10個のファイルに対して実行すると、Maximum resident set sizeファイル数が2倍の場合に値が約2倍高いことがわかります。

したがって、これらすべてを一度に実行するのではなく、一度に1つずつまたは一度に10個ずつ変換してから、このPDFをリンクしてください。この操作は時間がかかりますが、メモリの使用量が少なくなります。

rm -f /tmp/file.pdf
for i in *.gif
do convert "$i" /tmp/a.pdf
   if [ -s /tmp/file.pdf ]
   then gs -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=/tmp/b.pdf /tmp/file.pdf /tmp/a.pdf
   else mv /tmp/a.pdf /tmp/b.pdf
   fi
   mv /tmp/b.pdf /tmp/file.pdf
done

答え2

cpulimit、ionice、Niceを使用してください。

nice -n19 ionice -c3 cpulimit -l 20 -- convert /path/to/*.gif file.pdf

関連情報