将 *.gif 转换为 file.pdf 会挂起/冻结系统

将 *.gif 转换为 file.pdf 会挂起/冻结系统

我的目录中有 415 个 gif 文件,并尝试使用以下命令将它们制作为单个 pdf 文件:

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

但这会导致整个系统挂起/冻结。换句话说,它使系统变得非常慢,我必须Ctrl+ c(终止)该进程(这也消耗一些时间来停止)。

我该如何面对这个问题?是否有更好/替代的机制(命令/程序/解决方法)来完成此任务?

注意:我正在使用 Trisquel GNU/Linux 7.0 LTS 开发简单的台式电脑(3+3 GHz P4 处理器和 1GB og RAM)。该convert计划是以下组织的成员图像魔术师工具套件。

答案1

您可能使用了大量内存并导致交换。/usr/bin/time -v在命令前面使用一个简单的测试,当对 5 个文件运行时,然后再次对 10 个文件运行时,将显示,Maximum resident set size对于两倍数量的文件,该值大约是两倍。

因此,与其一次性完成所有这些操作,不如一次转换一个,或者一次转换十个,然后将这些 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

相关内容