From: Yura Kalinichenko <yuk@iceb.vinnitsa.com>
To: "Список рассылки ALTLinux" <community@altlinux.ru>
Subject: Re: [Comm] Crazy printing
Date: 29 Apr 2004 16:42:05 +0300
Message-ID: <1083246125.2721.9.camel@iceb> (raw)
In-Reply-To: <4090BDF7.6030606@feht.dgtu.donetsk.ua>
[-- Attachment #1: Type: text/plain, Size: 989 bytes --]
В Чтв, 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
[-- Attachment #2: lprm --]
[-- Type: text/x-sh, Size: 1676 bytes --]
#!/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 <yuk@iceb.vinnitsa.com>
#
# 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
next prev parent reply other threads:[~2004-04-29 13:42 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-04-29 8:33 Aleksander N.Gorohovski
2004-04-29 13:42 ` Yura Kalinichenko [this message]
2004-04-30 10:48 ` Aleksander N.Gorohovski
2004-04-30 16:11 ` Yura Kalinichenko
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1083246125.2721.9.camel@iceb \
--to=yuk@iceb.vinnitsa.com \
--cc=community@altlinux.ru \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
ALT Linux Community general discussions
This inbox may be cloned and mirrored by anyone:
git clone --mirror http://lore.altlinux.org/community/0 community/git/0.git
# If you have public-inbox 1.1+ installed, you may
# initialize and index your mirror using the following commands:
public-inbox-init -V2 community community/ http://lore.altlinux.org/community \
mandrake-russian@linuxteam.iplabs.ru community@lists.altlinux.org community@lists.altlinux.ru community@lists.altlinux.com
public-inbox-index community
Example config snippet for mirrors.
Newsgroup available over NNTP:
nntp://lore.altlinux.org/org.altlinux.lists.community
AGPL code for this site: git clone https://public-inbox.org/public-inbox.git