ディレクトリに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