![将 *.gif 转换为 file.pdf 会挂起/冻结系统](https://linux22.com/image/99155/%E5%B0%86%20*.gif%20%E8%BD%AC%E6%8D%A2%E4%B8%BA%20file.pdf%20%E4%BC%9A%E6%8C%82%E8%B5%B7%2F%E5%86%BB%E7%BB%93%E7%B3%BB%E7%BB%9F.png)
我的目录中有 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