Avanti Indietro Indice

2. La stampa sotto Linux

Questa sezione del documento illustra come stampare file, esaminare la coda di stampa, rimuovere file dalla coda di stampa, formattare file prima di stamparli e configurare l'ambiente di stampa.

2.1 Storia della stampa sotto Linux

Il sistema di stampa di Linux ---il sistema lp--- è un porting del codice sorgente scritto dai Regents of the University of California per la distribuzione di UNIX nota come BSD (Berkeley Software Distribution).

2.2 Stampa di un file usando lpr

La via di gran lunga più semplice di stampare un file sotto Linux è quella di inviare il file che si intende stampare direttamente alla stampante. Uno dei modi in cui questo può esser fatto è tramite l'uso del comando cat. Per l'utente root è possibile eseguire un comando come il seguente

# cat tesi.txt > /dev/lp

Nel caso in esame /dev/lp è un link simbolico all'effettivo dispositivo di stampa - indipendentemente dal suo essere una stampante a matrice di punti, una laser o un plotter (si veda ln(1) per ulteriori informazioni sui link simbolici).

Per ragioni di sicurezza, solo l'utente root ed utenti facenti parte dello stesso gruppo del demone di stampa possono accedere direttamente al dispositivo di stampa. Per accedere alle stampanti devono quindi essere usati comandi come lpr, lprm e lpq.

Per questi motivi gli utenti devono usare il comando lpr per stampare un file. Il comando lpr si occupa di tutti i compiti inizialmente necessari nella stampa di un file prima di cedere il controllo al programma lpd, il line printing daemon, che si occuperà di indicare alla stampante come procedere alla effettiva stampa del file.

Quando il comando lpr viene eseguito, procede a copiare il file specificato dall'utente in una directory speciale (directory di spool), ove il file rimarrà sino a quando lpd non abbia completato la sua stampa. Non appena lpd riceve comunicazione dell'esistenza di un file nella coda di stampa, provvede a creare una copia di se stesso (tramite una procedura detta dai programmatori "di forking"). Questa copia del programma provvederà alla stampa del file mentre il processo originario si pone in attesa della prossima richiesta di stampa. Tramite questo sistema è possibile porre più file nella coda di stampa simultaneamente.

La sintassi del comando lpr(1) è una di quelle molto familiari agli utenti:

$ lpr [ opzioni ] [ nomefile ... ]

Se nomefile non viene specificato lpr assume che l'imput provenga dal file di standard input stdin (solitamente la tastiera o l'output di un altro programma). Questo permette agli utenti di reindirizzare l'output di un altro processo direttamente al programma di stampa, come nell'esempio seguente:

$ cat tesi.txt | lpr

oppure

$ pr -l60 tesi.txt | lpr

Il comando lpr accetta diversi argomenti che permettono all'utente di controllare il suo funzionamento. Tra quelli più spesso usati ricordiamo: -Pstampante indica quale stampante usare, -h sopprime la stampa della burst page, -s crea un link simbolico nella directory di spool invece di procedere a copiarvi il file (particolarmente utile nel caso di file di notevoli dimensioni) e -#num specifica quante copie del file stampare. A titolo di esempio:

$ lpr -#2 -sP dj tesi.txt

Questo comando creerà un link simbolico al file tesi.txt nella directory di spool della stampante chiamata dj, dove sarà processato da lpd, che ne stamperà due copie.

Per una lista esaustiva di tutte le opzioni del comando lpr si rinvia alla manpage lpr(1).

2.3 Analisi della coda di stampa tramite lpq

Il comando lpq viene impiegato per visualizzare i contenuti della coda di stampa. Lanciato senza argomenti lpq ritorna i contenuti della coda di stampa della stampante predefinita.

L'output di lpq può tornare utile in molti contesti:

$ lpq
lp is ready and printing
Rank   Owner   Job  Files        Total Size
active mwf     31   tesi.txt     682048 bytes

2.4 Uso di lprm per cancellare un ordine di stampa

Un'altra utile funzione di un qualsiasi rispettabile sistema di stampa è quella di poter rimuovere file che siano stati precedentemente posti nella coda di stampa. A questo scopo si utilizza il comando lprm:

$ lprm -

Questo comando cancella tutti gli ordini di stampa pendenti appartenenti all'utente che lo ha lanciato. Un singolo file può essere rimosso dalla coda di stampa in due fasi: inizialmente sarà necessario scoprire il suo job number tramite lpq e a quel punto sarà possibile invocare lprm con tale parametro. L'esempio seguente:

$ lprm 31

cancellerebbe il file con job number 31 (tesi.txt) dalla coda di stampa della stampante predefinita.

2.5 Controllo del line printing daemon (lpd) tramite lpc

Il comando lpc(8) serve a controllare le stampanti gestite da lpd. È possibile abilitare o disabilitare l'uso di una stampante o della sua code di stampa, modificare l'ordine con cui i file sono disposti al loro interno e ottenere un rapporto sullo stato delle stampanti e relative code di stampa. Lpc risulta particolarmente utile in configurazioni in cui una singola macchina disponga di più di una stampante.

$ lpc

Questo comando introduce l'utente in un ambiente interattivo nel quale è possibile inserire comandi. Un'altra possibilità è quella di passare un comando a lpc tramite la linea di comando:

$ lpc status all

Una lista completa dei comandi disponibili può essere ottenuta tramite la manpage di lpd, ma il lettore troverà di seguito una lista di quelli di maggior rilevanza. Ogni comando seguito dalla parola opzioni può ricevere sia il nome di una specifica stampante (ad esempio lp o print) sia la parola chiave all, usata per indicare il riferirsi del comando a tutte le stampanti disponibili.

2.6 Il printtool di RedHat

Una breve nota sul sorprendente programma printtool della RedHat: esso sembra possedere tutte le capacità di un magic filter. La distribuzione della RedHat provvede automaticamente ad installare molti dei programmi che eseguono il filtraggio. Seguono i passi seguiti dal sottoscritto per configurare la propria stampante (una HP LJ 4L connessa alla porta parallela) sotto RH 4.0 (tale procedura dovrebbe risultare effettiva anche sotto altre versioni della distribuzione RH).

Esattamente come se gestiste il file /etc/printcap file manualmente, è possibile mantenere più definizioni per ciascuna stampante con differenti dimensioni della carta, risoluzioni o altro.


Avanti Indietro Indice