Try the following commands. The commands appear after the prompt, and sample output that you might see is shown.
h4: {104} % lpr -V /tmp/hi Version LPRng-3.6.14 sending job 'papowell@h4+238' to lp@localhost connecting to 'localhost', attempt 1 connected to 'localhost' requesting printer lp@localhost sending control file 'cfA238h4.private' to lp@localhost completed sending 'cfA238h4.private' to lp@localhost sending data file 'dfA238h4.private' to lp@localhost completed sending 'dfA238h4.private' to lp@localhost done job 'papowell@h4+238' transfer to lp@localhost
The lpr -V (Verbose) option causes lpr to print status output. As you can see from the above lines, it first tries to connect to the lpd server on host localhost, then sends a print request (which is accepted), then sends a control file containing information about the job and a data file or files which are copies of the files to be printed.
If you check the /tmp/lp file and you will find that a copy of /tmp/hi has been written to it. By default, the lpd print spooler acts as a store and forward system, accepting files to be printed, holding them in the print queue, and then forwarding them to the destination system or output device.
You can use the lpq command to view the status of the print job.
h4: {105} % lpq Printer: lp@h4 Queue: no printable jobs in queue Status: job 'papowell@h4+238' removed at 09:39:03.256
If you want to see more status information, use lpq -l, lpq -ll, or even lpq -L. The -L provides alL the status.
h4: {106} % lpq -l Printer: lp@h4 Queue: no printable jobs in queue Status: lp@h4.private: job 'papowell@h4+238' printed at 09:39:03.112 Status: job 'papowell@h4+238' removed at 09:39:03.256 h4: {107} % lpq -ll Printer: lp@h4 Queue: no printable jobs in queue Status: finished 'papowell@h4+238', status 'JSUCC' at 09:39:03.108 Status: subserver pid 8240 exit status 'JSUCC' at 09:39:03.110 Status: lp@h4.private: job 'papowell@h4+238' printed at 09:39:03.112 Status: job 'papowell@h4+238' removed at 09:39:03.256 h4: {108} % lpq -L Printer: lp@h4 Queue: no printable jobs in queue Status: subserver pid 8240 starting at 09:39:03.105 Status: accounting at start at 09:39:03.105 Status: opening device '/tmp/lp' at 09:39:03.105 Status: printing job 'papowell@h4+238' at 09:39:03.106 Status: no banner at 09:39:03.107 Status: printing data file 'dfA238h4.private', size 3 at 09:39:03.107 Status: printing done 'papowell@h4+238' at 09:39:03.107 Status: accounting at end at 09:39:03.108 Status: finished 'papowell@h4+238', status 'JSUCC' at 09:39:03.108 Status: subserver pid 8240 exit status 'JSUCC' at 09:39:03.110 Status: lp@h4.private: job 'papowell@h4+238' printed at 09:39:03.112 Status: job 'papowell@h4+238' removed at 09:39:03.256
There are different status formats available as well. The lpq -s (summary) produces a single line of status per spool queue, while the lpq -v (verbose) produces output that is very suitable for processing with programs such as Perl or awk:
h4: {109} % lpq -s lp@h4 0 jobs h4: {110} % lpq -v Printer: lp@h4 Printing: no Aborted: no Spooling: no Queue: no printable jobs in queue SPOOLCONTROL= Status: subserver pid 8240 starting at 09:39:03.105 Status: accounting at start at 09:39:03.105 Status: opening device '/tmp/lp' at 09:39:03.105 Status: printing job 'papowell@h4+238' at 09:39:03.106 Status: no banner at 09:39:03.107 Status: printing data file 'dfA238h4.private', size 3 at 09:39:03.107 Status: printing done 'papowell@h4+238' at 09:39:03.107 Status: accounting at end at 09:39:03.108 Status: finished 'papowell@h4+238', status 'JSUCC' at 09:39:03.108 Status: subserver pid 8240 exit status 'JSUCC' at 09:39:03.110 Status: lp@h4.private: job 'papowell@h4+238' printed at 09:39:03.112 Status: job 'papowell@h4+238' removed at 09:39:03.256
If you check the /tmp/lp file and you will find that a copy of /tmp/hi has been written to it. By default, the lpd print spooler acts as a store and forward system, accepting files to be printed, holding them in the print queue, and then forwarding them to the destination system or output device.