xref: /freebsd/share/doc/smm/07.lpd/2.t (revision 7899f917b1c0ea178f1d2be0cfb452086d079d23)
Copyright (c) 1983, 1993
The Regents of the University of California. All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
3. Neither the name of the University nor the names of its contributors
may be used to endorse or promote products derived from this software
without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
SUCH DAMAGE.

Commands lpd - line printer daemon

The program lpd (8), usually invoked at boot time from the /etc/rc file, acts as a master server for coordinating and controlling the spooling queues configured in the printcap file. When lpd is started it makes a single pass through the printcap database restarting any printers that have jobs. In normal operation lpd listens for service requests on multiple sockets, one in the UNIX domain (named ``/dev/printer'') for local requests, and one in the Internet domain (under the ``printer'' service specification) for requests for printer access from off machine; see socket\|(2) and services\|(5) for more information on sockets and service specifications, respectively. Lpd spawns a copy of itself to process the request; the master daemon continues to listen for new requests.

Clients communicate with lpd using a simple transaction oriented protocol. Authentication of remote clients is done based on the ``privilege port'' scheme employed by rshd\|(8C) and rcmd\|(3X). The following table shows the requests understood by lpd . In each request the first byte indicates the ``meaning'' of the request, followed by the name of the printer to which it should be applied. Additional qualifiers may follow, depending on the request.

Request Interpretation
^Aprinter\en check the queue for jobs and print any found
^Bprinter\en receive and queue a job from another machine
^Cprinter [users ...] [jobs ...]\en return short list of current queue state
^Dprinter [users ...] [jobs ...]\en return long list of current queue state
^Eprinter person [users ...] [jobs ...]\en remove jobs from a queue

The lpr\|(1) command is used by users to enter a print job in a local queue and to notify the local lpd that there are new jobs in the spooling area. Lpd either schedules the job to be printed locally, or if printing remotely, attempts to forward the job to the appropriate machine. If the printer cannot be opened or the destination machine is unreachable, the job will remain queued until it is possible to complete the work. lpq - show line printer queue

The lpq\|(1) program works recursively backwards displaying the queue of the machine with the printer and then the queue(s) of the machine(s) that lead to it. Lpq has two forms of output: in the default, short, format it gives a single line of output per queued job; in the long format it shows the list of files, and their sizes, that comprise a job. lprm - remove jobs from a queue

The lprm\|(1) command deletes jobs from a spooling queue. If necessary, lprm will first kill off a running daemon that is servicing the queue and restart it after the required files are removed. When removing jobs destined for a remote printer, lprm acts similarly to lpq except it first checks locally for jobs to remove and then tries to remove files in queues off-machine. lpc - line printer control program

The lpc (8) program is used by the system administrator to control the operation of the line printer system. For each line printer configured in /etc/printcap, lpc may be used to:

\(bu
disable or enable a printer,
\(bu
disable or enable a printer's spooling queue,
\(bu
rearrange the order of jobs in a spooling queue,
\(bu
find the status of printers, and their associated spooling queues and printer daemons.