From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Subject: Re: [Comm] Crazy printing From: Yura Kalinichenko To: =?koi8-r?Q?=F3=D0=C9=D3=CF=CB_?= =?koi8-r?Q?=D2=C1=D3=D3=D9=CC=CB=C9?= ALTLinux In-Reply-To: <4090BDF7.6030606@feht.dgtu.donetsk.ua> References: <4090BDF7.6030606@feht.dgtu.donetsk.ua> Content-Type: multipart/mixed; boundary="=-AdgLUugvoNdqB7turLco" Organization: iceB Software Group Message-Id: <1083246125.2721.9.camel@iceb> Mime-Version: 1.0 X-Mailer: Ximian Evolution 1.2.1- (1.2.1-alt3) Date: 29 Apr 2004 16:42:05 +0300 X-BeenThere: community@altlinux.ru X-Mailman-Version: 2.1.4 Precedence: list Reply-To: community@altlinux.ru List-Id: Mailing list for ALT Linux users List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 29 Apr 2004 13:54:44 -0000 Archived-At: List-Archive: List-Post: --=-AdgLUugvoNdqB7turLco Content-Type: text/plain; charset=KOI8-U Content-Transfer-Encoding: 8bit В Чтв, 29.04.2004, в 11:33, Aleksander N.Gorohovski написал: > Доброго времени суток Уважаемое сообщество! > > Споткнулся с такой проблемой когда пользователь отправляет > на печать (струйный EPSON Stilus Color 600) случайно не тот файл. > Выполняю процедуру отмены задания печати: > # lpstat -u > выдает :Epson-2356 > # lprm 2356 > продолжает печатать. > # lpstat -u > нет заданий на печать > # lpq > нет заданий на печать > > Выключаю принтер и через некоторое время (30 сек) включаю - > все равно продолжает допечатывать! > > Создается такое впечатление, что где-то (в буфере системы) > находиться какая-то часть документа, которая не отображается по > lpstat и lpq. > Есть такая бага в этом слове. Сделав ps -xa вы могли бы увидеть активный процесс parallel (или на чем там у вас принтер сидит), каковой lprm'мом не убивается. Для себя я эту проблему решил с помощью небольшого скриптика, который ставлю вместо lprm - см. вложение. -- Yura Kalinichenko mob. +380 67 587 83 02 --=-AdgLUugvoNdqB7turLco Content-Disposition: attachment; filename=lprm Content-Type: text/x-sh; name=lprm; charset=KOI8-U Content-Transfer-Encoding: 7bit #!/bin/sh # # This is a temporary replacement for buggy lprm from spooling system CUPS. # Fixed bug is: original can't really stop active job # Autor: Yura Kalinichenko # # Additional requirements: # all users must have permission for `kill' as user `lp'. # For example, you can enter in file `sudoers' next string: # ALL ALL=(lp) NOPASSWD: /bin/kill # # Yes, now every user can kill any printing, but... # CMDLINE=`getopt -o P: -- "$@"` if [ $? != 0 ] ; then echo "Terminating..." >&2 ; exit 255 ; fi eval set -- "$CMDLINE" while true ; do case "$1" in -P) PRINTER=$2 shift 2 ;; --) shift ; break ;; esac done if [ -z "$PRINTER" ]; then PRINTER=`lpstat -d | sed -e "s/system default destination: //"` if [ -z "$PRINTER" ]; then echo "No default printer - use \"-P printer_name\"" > /dev/stderr exit 255 fi fi jobs=$* driver=`lpstat -v $PRINTER | sed -e "s/device for $PRINTER: //"` status=0 if [ "$jobs" = "-" ]; then # remove all jobs for the PRINTER jobs=`lpstat $PRINTER | cut -d\ -f1 | sed -e "s/$PRINTER-//"` fi for n in $jobs ; do # remove separate job by number # first remove job from spool queue if lprm-cups -P $PRINTER $n ; then # then kill driver of active job if is pid=`ps -C $driver --format pid,command` pid=`echo $pid | grep "$driver $n "` pid=`echo $pid | awk '{print $3}'` if [ -n "$pid" ]; then sudo kill -9 $pid fi else # lprm-cups is failed, maybe "not owner". # Bad return status, but continue status=`expr $status + 1` fi done exit $status --=-AdgLUugvoNdqB7turLco--