Я генерировал сценарий оболочки, который использует ImageMagick, чтобы преобразовать и обрезать приблизительно 18 000 изображений. Вот демонстрационная запись (таким образом, существует 18000 из них):
if [ ! -f ./cropped/16333-1.png ]
then
convert -crop 724x118+876+1989 ./lin/34.png ./cropped/16333-1.png
echo cropping 16333-1
fi
if [ ! -f ./cropped/16333-1_thumb.png ]
then
convert -define jpeg:size=400x100 ./cropped/16333-1.png -thumbnail '400x100>' -background transparent -gravity center -extent 400x100 ./cropped/16333-1_thumb.png
echo thumbing 16333-1
fi
Сценарий только работает приблизительно за 2 000 изображений прежде, чем зависнуть навсегда. Я пропускаю что-то или пропускаю память где-нибудь?
Спасибо за помощь!
ОБНОВЛЕНИЕ
Я пытался запустить скрипт с флагом-x, как предложено и сценарий, подвешенный после этой команды:
+ '[' '!' -f ./cropped/8967-1_thumb.png ']'
+ convert -define jpeg:size=400x100 ./cropped/8967-1.png -thumbnail '400x100>' -background transparent -gravity center -extent 400x100 ./cropped/8967-1_thumb.png
Однако, когда я прерываю сценарий и затем копирую и вставляю команду выше, это работает очень хорошо. Никакое зависание. Я могу затем возобновить сценарий, и он отправляется снова прекрасный.
Таинственный...
Мое предположение - то, что существует некоторый метасимвол оболочки там где-нибудь, который сбивает его с толку.
Диагностировать и решить:
> < ! $
которых не оставляютПоочередно, добавить -x
к первой строке сценария так, чтобы Вы видели каждую команду, когда это выполняется. Это должно посмотреть что-то как:
#! /bin/bash -x