*.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파일 수가 두 배일 때 값이 약 두 배 더 높다는 것을 알 수 있습니다.

따라서 이 모든 작업을 한 번에 수행하는 대신 한 번에 하나씩 또는 한 번에 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

관련 정보