Linux e la linea di comando, comandi particolari e poco conosciuti: gestione delle code di stampa

linux

Dopo aver affrontato i comandi interni alla shell Bash ed i comandi di sistema richiamabili all’interno dalla stessa per la manipolazione degli stream di output e dei contenuti dei file in questo articolo verranno trattati i comandi per la gestione delle code di stampa.
Verranno illustrati i comandi per inviare un file direttamente alla stampante, analizzare la coda di stampa e rimuovere lavori in coda.

I comandi per operare sulle code di stampa nei sistemi Linux moderni sono forniti dal pacchetto del server di posta CUPS. CUPS fornisce un set di comandi retro compatibili al precedente gestore della posta Linux, LPD: questo significa che il nome degli stessi è stato mantenuto identico in modo da favorire l’integrazione di CUPS con i programmi che fanno riferimento a comandi di sistema come lpstat, lpq e così via.
Sebbene CUPS di default renda disponibile un’interfaccia web alla porta 631, alla quale si può accedere con il proprio browser, molte volte potrebbe essere necessario utilizzare la linea di comando per operare sulle code di stampa. I comandi che consentono tali operazioni si dividono in comandi che richiedono i permessi dell’utente root ed in comandi utilizzabili da utenti non privilegiati.

Informazioni sulle stampanti (utente root)

lpstat

Capire quali sono le code configurate all’interno del sistema è il primo passo per iniziare ad operare all’interno delle stesse.
Il comando lpstat consente di visualizzare diverse informazioni sulle stampanti installate all’interno del sistema, ad esempio attraverso l’opzione “-p” il comando restituisce l’elenco delle stampanti:

# lpstat -p
la stampante Brother-HL-4040CN è in attesa.  Abilitata da gio 19 nov 2009 18:23:32 CET
la stampante HPDeskJet9300 è in attesa. Abilitata da sab 21 nov 2009 18:15:58 CET
la stampante PDF è in attesa.  Abilitata da gio 19 nov 2009 17:29:14 CET

Un diverso elenco, contenente i riferimenti delle stampanti (socket, path remoti, etc.) è ottenibile attraverso l’opzione “-v”:

# lpstat -v
dispositivo per Brother-HL-4040CN: socket://192.168.1.13
dispositivo per HPDeskJet9300: smb://RASCA/RASCABOX/HPDeskjet9300
dispositivo per PDF: cups-pdf:/

E’ possibile inoltre identificare la coda di default verso cui vengono diretti i lavori in stampa (opzione “-d”):

# lpstat -d
destinazione predefinita di sistema: PDF

Tutte le informazioni illustrate sono ottenibili in un unico contatto attraverso l’opzione “-t”, mentre, lanciato senza argomenti, il comando restituisce l’elenco dei lavori in coda, ottenibile anche con i comandi illustrati di seguito.

Gestire la coda (utente root)

lpq

E’ possibile ottenere l’elenco dei lavori accodati nella stampante di default o di una specifica attraverso il comando lpq:

# lpq
PDF è pronta
Posiz.   Proprietario    Stampa   Doc.             Dim. totali
1st     rasca   298     Command-Line Printing and Optio 396288 byte

Nel caso si volessero conoscere i dettagli della coda relativa ad una stampante specifica, questa va specificata con l’opzione “-P”:

# lpq -P HPDeskJet9300
HPDeskJet9300 è pronta
nessuna voce

lprm

Per operare sulle code, rimuovendo lavori di cui si conosce l’identificativo (ottenuto attraverso lpq), è possibile utilizzare il comando lprm, indicando con l’opzione “-P” l’accoppiata coda/identificativo:

# lprm -P PDF/298

Inviare stampe (utente non privilegiato)

lpr

Se un utente comune volesse lanciare delle stampe da linea di comando, cosa molto utile in caso di lavori di sistema notturni, notifiche di problemi (o qualsiasi altro motivo per cui sia sensato utilizzare della carta!), il comando da utilizzare è lpr che stampa il contenuto di un file di testo passato come parametro:

$ lpr testfile

pr e fmt

lpr può essere utilizzato anche per dirigere l’output di un comando alla stampante. Ad esempio, utilizzando i comandi pr o fmt che formattano un file di testo per la stampa è possibile passare attraverso una pipe ad lpr la stampa da effettuare:

$ pr -a testfile | lpr

oppure

$ pr -a testfile | lpr

mpage

Lo stesso discorso si applica al comando mpage che consente di operare con maggior dettaglio sul formato di stampa. Lanciato senza argomenti, mpage produrrà una pagina divisa in quattro contenente il testo all’interno del file passato come parametro. Attraverso l’opzione “-b” è poi possibile specificare il formato della carta che verrà utilizzato dalla stampante (di default A4). Per conoscere i formati supportati è possibile utilizzare il parametro “-b” con l’aggiunta di un punto interrogativo:

$ mpage -b?
Mpage knows about the following paper types:
Type           Points Wide Points High
-------------- ----------- -----------
Letter                 612         792
LetterSmall            612         792
Tabloid                792        1224
Ledger                1224         792
Legal                  612        1008
Statement              396         612
Executive              540         720
A0                    2384        3368
A1                    1684        2384
A2                    1192        1684
A3                     842        1192
A4                     596         842
A4Small                595         842
A5                     420         595
B4                     729        1032
B5                     516         729
Folio                  612         936
Quarto                 610         780
10x14                  720        1008

Oltre all’utilizzo attraverso una pipe, mpage supporta anche la stampa diretta di file (anche in formato postscript), così come funziona lpr:

$ mpage -PPDF testfile

Numerose sono le opzioni disponibili per il comando mpage e sono tutte documentate nella man page del programma.

Conclusioni

Questa breve carrellata di comandi presenta alcune utili informazioni che potrebbero risultare vitali in situazioni (volute o meno) in cui non sia disponibile altro accesso al sistema che quello della linea di comando.
Approfondendo presso i link presentati qui sotto sarà possibile acquisire la padronanza totale del sistema di stampa da linea di comando.

Fonti di informazioni utili:

Pagina ufficiale del progetto CUPS: http://www.cups.org/documentation.php/options.html
The Linux Printing Usage HOWTO: http://tldp.org/HOWTO/Printing-Usage-HOWTO.html

Da sempre appassionato del mondo open-source e di Linux nel 2009 ho fondato il portale Mia Mamma Usa Linux! per condividere articoli, notizie ed in generale tutto quello che riguarda il mondo del pinguino, con particolare attenzione alle tematiche di interoperabilità, HA e cloud.
E, sì, mia mamma usa Linux dal 2009.

Tags: , , , , ,