This section discusses how to print files, examine the print queue, remove jobs from the print queue, format files before printing them, and configure your printing environment.
The Linux printing system---the lp system---is a port of the source code written by the Regents of the University of California for the Berkeley Software Distribution version of the UNIX operating system.
By far, the most simplistic way to print in the Linux operating system is
to send the file to be printed directly to the printing device. One way
to do this is to use the cat command. As the root
user,
one could do something like
# cat thesis.txt > /dev/lp
In this case, /dev/lp
is a symbolic link to the actual printing
device--be it a dot-matrix, laser printer, typesetter, or plotter. (See
ln(1) for more information on symbolic links.)
For the purpose of security, only the root
user and users in the
same group as the print daemon are able to write directly to the printer.
This is why commands such as lpr, lprm, and lpq
have to be used to access the printer.
Because of this, users have to use lpr to print a file. The lpr command is responsible for taking care of all of the initial work needed to print the file, and then it hands control over to another program, lpd, the line printing daemon. The line printing daemon then tells the printer how to print the file.
When lpr is executed, it first copies the specified file to a certain directory (the spool directory) where the file remains until lpd prints it. Once lpd is told that there is a file to print, it will spawn a copy of itself (what we programmers call forking). This copy will print our file while the original copy waits for more requests. This allows for multiple jobs to be queued at once.
The syntax of lpr(1) is a very familiar one,
$ lpr [ options ] [ filename ... ]
If a filename
is not specified, lpr assumes that the input
should come from standard input (usually the keyboard, or another program's
output). This enables the user to redirect a command's output to the
printing device. As such,
$ cat thesis.txt | lpr
or, something more powerful, like
$ pr -l60 thesis.txt | lpr
The lpr command accepts several command-line arguments that allow a user to control how it works. Some of the most widely used arguments are: -Pprinter specifies the printer to use, -h suppresses printing of the burst page, -s creates a symbolic link instead of copying the entire file to the spool directory (useful for large files), and -#num specifies the number of copies to print. An example interaction with lpr might be something like
$ lpr -#2 -sP dj thesis.txt
This command would create a symbolic link to the file thesis.txt
in
the spool directory for the printer named dj, where it would be
processed by lpd. It would then print a second copy of
thesis.txt
.
For a listing of all the options that lpr will recognize, see lpr(1).
Sometimes it is useful to know what jobs are currently in a particular printer's queue. This is the sole task of the lpq command.
To see what is in the queue of the default printer (as defined by /etc/printcap), use
$ lpq
lp is ready and printing
Rank Owner Job Files Total Size
active mwf 31 thesis.txt 682048 bytes
Another useful feature of any printing system is the ability to cancel a job that has been previously queued. To do this, use lprm.
$ lprm -
The above command cancels all of the print jobs that are owned by the user who issued the command. A single print job can be canceled by first getting the job number as reported by lpq, and then giving that number to lprm. For example,
$ lprm 31
would cancel job 31 (thesis.txt) on the default printer.
Next Chapter, Previous Chapter
Table of contents of this chapter, General table of contents
Top of the document, Beginning of this Chapter