FWIW, у меня была такая же проблема с принтером этикеток Brother QL-1050 под Debian Sid. Это была не ошибка приложения, как предлагалось в комментариях, а проблема CUPS / драйвера. Вы можете подтвердить это, запустив lp
или lpr
и посмотреть, не повлияло ли оно на это тоже:
lp -d YOURPRINTER -n 2 /some/file.pdf
lpr -P YOURPRINTER -# 2 /some/file.pdf
Мне удалось решить проблему, отредактировав / usr / lib / cups / filter / brother_lpdwrapper_ql1050
и изменение строки
CUPSOPTION=`echo "$5 Copies=$4" | sed -e …
на
CUPSOPTION=`echo "$5" | sed -e …
( Copies = 1
также работает).
Я думаю, что количество копий было подано дважды.
Для вашего принтера должен быть аналогичный файл, и хотя я предполагаю, что имя и определение CUPSOPTION
могут отличаться, эти параметры, вероятно, там определены.
Используйте следующий скрипт bash (чтобы заснуть на 10 секунд между каждыми 10 "эхо"):
test.sh
— тестовое имя скрипта
#!/bin/bash
while ((++i)); read -r line
do
echo "$line"
if (( "$i" % 10 == 0))
then
sleep 10
fi
done < $1
Использование :
bash test.sh test_file
while ((++i))
- будет увеличивать счетчик i
каждый раз, когда read -r строка
возвращает строку из input
if (( "$i" % 10 == 0))
- проверяет, делится ли текущий номер строки i
на 10
(означает, что поток выполнения достигает следующих 10 строк)
sleep 10
- приостанавливает выполнение скрипта на 10 секунд
xargs -L 10 sh -c 'printf "%s\n" "$@"; sleep 10' sh < test_file
xargs
с -L
займет 10 строк за один раз и передаст их команде sh -c
. Там первый аргумент используется как имя программы, мы поместим фиктивное имя sh
. Затем эти 10 строк будут доступны для sh
как "$@", и мы сможем делать с ними все, что захотим. Здесь мы просто печатаем их. Затем мы засыпаем
на 10 секунд. После этого xargs
должны пройти следующие 10 траншей, и этот цикл повторяется до тех пор, пока не закончатся лжи в test_file.