IBQUOTA

(Impressão Barrada por QUOTA de usuário)


HOME

Documentação

Download

Contribuições

Links

Contato


Versão Atual:
GIT IBQUOTA 3.1


Versão Antiga:
IBQUOTA 2.4.1




Reduzindo o tempo de 30 segundos de espera do CUPS

Alguns dias atras presenciei um usuario falando com uma impressora, o seguinte:
- Vamos logo sua porcaria!

Isto acontece porque, cada vez mais, queremos que os equipamentos nos respondam em tempo real. Nao queremos saber se uma impressora Laser tem que aguardar um tempo para esquentar antes de imprimir a primeira pagina do documento.
Nos, administradores de sistemas, temos que garantir o maximo de eficiencia dos recursos computacionais para nossos queridos usuarios. Ate mesmo para evitar que um deles apele para agressao fisica. Coitado dos equipamentos!

Ja que todos exigem respostas em tempo real, vamos logo comecar a escrever o que realmente interessa:

O CUPS para a impressao dos jobs por 30 segundos quando observa que a impressora esta BUSY (trabalhando, ou seja: processando um job enviando anteriormente, aquecendo o tonner [nao em todo os casos], sem papel, ...), e se o problema persistir, o CUPS volta a parar por mais 30 segundos. Este problema pode acontecer em diversos dispositidos (porta paralela, usb, impressora via rede,...).
Para algumas pessoas, ou melhor usuarios, este tempo de 30 segundos eh muito tempo. Eh uma eternidade! Podemos reduzir estes 30 segundos, veja como:

REDUZIR O TEMPO DE ESPERA DO CUPS

Temos que alterar diretamente o codigo fonte do CUPS, cada dispositivo possui um arquivo diferente, veja abaixo:

backend/ipp.c: "INFO: Network host \'%s\' is busy; will retry in 30 seconds..."
backend/lpd.c: "WARNING: Network host \'%s\' is busy, down, or unreachable; will retry in 30 seconds...\n"
backend/parallel.c: "INFO: Parallel port busy; will retry in 30 seconds...\n"
backend/parallel.c: "INFO: Printer not connected; will retry in 30 seconds...\n"
backend/serial.c: "INFO: Serial port busy; will retry in 30 seconds...\n"
backend/usb.c: "INFO: USB port busy; will retry in 30 seconds...\n"
backend/usb.c: "INFO: Printer not connected; will retry in 30 seconds...\n"

Todos os arquivos acima estao no diretorio "backend" do codigo fonte do CUPS ( .tar.gz).
No meu caso quero reduzir de 30 para 10 segundos o tempo de espera na porta PARELELA, entao vou editar o codigo fonte do arquivo "backend/parallel.c". Eh muito simples, nao tenha medo.
Veja um trexo do codigo abaixo:
...
if (errno == EBUSY)
{
fputs("INFO: Parallel port busy; will retry in 30 seconds...\n", stderr);
sleep(30);
}
else if (errno == ENXIO || errno == EIO || errno == ENOENT)
{
fputs("INFO: Printer not connected; will retry in 30 seconds...\n", stderr);
sleep(30);
}
...

Tenho que alterar as linhas das funcoes "fputs" e "sleep". Veja como o codigo ficou depois da alteracao:

...
if (errno == EBUSY)
{
fputs("INFO: Parallel port busy; will retry in 10 seconds...\n", stderr);
sleep(10);
}
else if (errno == ENXIO || errno == EIO || errno == ENOENT)
{
fputs("INFO: Printer not connected; will retry in 10 seconds...\n", stderr);
sleep(10);
}
...

Agora eh so compilar o CUPS (configure; make; make install) como explica no site do IBQUOTA.
Espero ter ajudado,

Valcir Cabral - 15/09/2004
Copyleft 2003. IB - UNICAMP