<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> <HTML> <HEAD> <META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.9"> <TITLE>Linux Printing Usage HOWTO: La stampa sotto Linux</TITLE> <LINK HREF="Printing-Usage-HOWTO-3.html" REL=next> <LINK HREF="Printing-Usage-HOWTO-1.html" REL=previous> <LINK HREF="Printing-Usage-HOWTO.html#toc2" REL=contents> </HEAD> <BODY> <A HREF="Printing-Usage-HOWTO-3.html">Avanti</A> <A HREF="Printing-Usage-HOWTO-1.html">Indietro</A> <A HREF="Printing-Usage-HOWTO.html#toc2">Indice</A> <HR> <H2><A NAME="s2">2. La stampa sotto Linux</A></H2> <P>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. <P> <H2><A NAME="ss2.1">2.1 Storia della stampa sotto Linux</A> </H2> <P> <!-- printing!history of --> Il sistema di stampa di Linux ---il sistema <EM>lp</EM>--- è un porting del codice sorgente scritto dai Regents of the University of California per la distribuzione di UNIX nota come BSD (Berkeley Software Distribution). <P> <H2><A NAME="ss2.2">2.2 Stampa di un file usando <EM>lpr</EM></A> </H2> <P> <!-- printing!using lpr command --> <!-- lpr command!usage example --> 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 <EM>cat</EM>. Per l'utente <CODE>root</CODE> è possibile eseguire un comando come il seguente <P> <BLOCKQUOTE><CODE> <PRE> # cat tesi.txt > /dev/lp </PRE> </CODE></BLOCKQUOTE> <P>Nel caso in esame <CODE>/dev/lp</CODE> è 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 <EM>ln</EM>(1) per ulteriori informazioni sui link simbolici). <P>Per ragioni di sicurezza, solo l'utente <CODE>root</CODE> 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 <EM>lpr</EM>, <EM>lprm</EM> e <EM>lpq</EM>. <P>Per questi motivi gli utenti devono usare il comando <EM>lpr</EM> per stampare un file. Il comando <EM>lpr</EM> si occupa di tutti i compiti inizialmente necessari nella stampa di un file prima di cedere il controllo al programma <EM>lpd</EM>, il line printing daemon, che si occuperà di indicare alla stampante come procedere alla effettiva stampa del file. <P>Quando il comando <EM>lpr</EM> viene eseguito, procede a copiare il file specificato dall'utente in una directory speciale (directory di spool), ove il file rimarrà sino a quando <EM>lpd</EM> non abbia completato la sua stampa. Non appena <EM>lpd</EM> 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. <P>La sintassi del comando <EM>lpr</EM>(1) è una di quelle molto familiari agli utenti: <P> <BLOCKQUOTE><CODE> <PRE> $ lpr [ opzioni ] [ nomefile ... ] </PRE> </CODE></BLOCKQUOTE> <P>Se <CODE>nomefile</CODE> non viene specificato <EM>lpr</EM> 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: <P> <BLOCKQUOTE><CODE> <PRE> $ cat tesi.txt | lpr </PRE> </CODE></BLOCKQUOTE> <P>oppure <P> <BLOCKQUOTE><CODE> <PRE> $ pr -l60 tesi.txt | lpr </PRE> </CODE></BLOCKQUOTE> <P>Il comando <EM>lpr</EM> accetta diversi argomenti che permettono all'utente di controllare il suo funzionamento. Tra quelli più spesso usati ricordiamo: -<B>P</B>stampante indica quale stampante usare, -<B>h</B> sopprime la stampa della burst page, -<B>s</B> 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 -<B>#</B>num specifica quante copie del file stampare. A titolo di esempio: <P> <BLOCKQUOTE><CODE> <PRE> $ lpr -#2 -sP dj tesi.txt </PRE> </CODE></BLOCKQUOTE> <P>Questo comando creerà un link simbolico al file <CODE>tesi.txt</CODE> nella directory di spool della stampante chiamata <EM>dj</EM>, dove sarà processato da <EM>lpd</EM>, che ne stamperà due copie. <P>Per una lista esaustiva di tutte le opzioni del comando <EM>lpr</EM> si rinvia alla manpage <EM>lpr</EM>(1). <P> <H2><A NAME="ss2.3">2.3 Analisi della coda di stampa tramite <EM>lpq</EM></A> </H2> <P> <!-- printing!using lpq command --> <!-- lpq command!usage example --> Il comando <EM>lpq</EM> viene impiegato per visualizzare i contenuti della coda di stampa. Lanciato senza argomenti <EM>lpq</EM> ritorna i contenuti della coda di stampa della stampante predefinita. <P>L'output di <EM>lpq</EM> può tornare utile in molti contesti: <P> <BLOCKQUOTE><CODE> <PRE> $ lpq lp is ready and printing Rank Owner Job Files Total Size active mwf 31 tesi.txt 682048 bytes </PRE> </CODE></BLOCKQUOTE> <P> <H2><A NAME="ss2.4">2.4 Uso di <EM>lprm</EM> per cancellare un ordine di stampa</A> </H2> <P> <!-- printing!using lprm command --> <!-- lprm command!usage example --> 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 <EM>lprm</EM>: <P> <BLOCKQUOTE><CODE> <PRE> $ lprm - </PRE> </CODE></BLOCKQUOTE> <P>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 <EM>lpq</EM> e a quel punto sarà possibile invocare <EM>lprm</EM> con tale parametro. L'esempio seguente: <P> <BLOCKQUOTE><CODE> <PRE> $ lprm 31 </PRE> </CODE></BLOCKQUOTE> <P>cancellerebbe il file con job number 31 (<CODE>tesi.txt</CODE>) dalla coda di stampa della stampante predefinita. <P> <H2><A NAME="ss2.5">2.5 Controllo del line printing daemon (lpd) tramite <EM>lpc</EM></A> </H2> <P> <!-- printing!using lpc command --> <!-- lpc command!usage example --> Il comando <EM>lpc</EM>(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. <P> <BLOCKQUOTE><CODE> <PRE> $ lpc </PRE> </CODE></BLOCKQUOTE> <P>Questo comando introduce l'utente in un ambiente interattivo nel quale è possibile inserire comandi. Un'altra possibilità è quella di passare un comando a <EM>lpc</EM> tramite la linea di comando: <P> <BLOCKQUOTE><CODE> <PRE> $ lpc status all </PRE> </CODE></BLOCKQUOTE> <P>Una lista completa dei comandi disponibili può essere ottenuta tramite la manpage di <EM>lpd</EM>, ma il lettore troverà di seguito una lista di quelli di maggior rilevanza. Ogni comando seguito dalla parola <EM>opzioni</EM> può ricevere sia il nome di una specifica stampante (ad esempio lp o print) sia la parola chiave <CODE>all</CODE>, usata per indicare il riferirsi del comando a tutte le stampanti disponibili. <P> <UL> <LI> disable <EM>opzioni</EM> - disabilita l'inserimento di nuovi file nella coda di stampa</LI> <LI> down <EM>opzioni</EM> - disabilita la stampante, interrompendo qualunque ordine di stampa pendente</LI> <LI> enable <EM>opzioni</EM> - abilita l'inserimento di nuovi file nella coda di stampa </LI> <LI> quit (o exit) - esce da lpc</LI> <LI> restart <EM>opzioni</EM> - reinizializza il lpd per quella stampante</LI> <LI> status <EM>opzioni</EM> - visualizza lo stato della stampante</LI> <LI> up <EM>opzioni</EM> - abilita tutto e lancia una nuova istanza di lpd</LI> </UL> <P> <H2><A NAME="ss2.6">2.6 Il printtool di RedHat</A> </H2> <P> <!-- printing!using Red Hat printool --> <!-- Red Hat Linux!printool --> <!-- printool utility --> 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). <P> <UL> <LI>Lanciare printtool avendo cura di essere root (se avete usato il comando <EM>su</EM>, avete ricordato di impostare SETENV DISPLAY :0.0 e lanciare xhost +, vero ?).</LI> <LI>Fare click su "Add" e confermate con "OK" per una stampante locale.</LI> <LI>Inserire il nome del dispositivo di stampa (/dev/lp1 per l'autore).</LI> <LI>Inserire il filtro di input - selezionate un tipo di stampante, la sua risoluzione e la dimensione dei fogli (tra i possibili ljet4, 300x300 e letter).</LI> <LI>Confermare con "OK" fino a giungere alla finestra principale e quindi reinizializzare lpd.</LI> </UL> <P>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. <P> <HR> <A HREF="Printing-Usage-HOWTO-3.html">Avanti</A> <A HREF="Printing-Usage-HOWTO-1.html">Indietro</A> <A HREF="Printing-Usage-HOWTO.html#toc2">Indice</A> </BODY> </HTML>