Structure of the LP Print Service

This section describes the directory structure, files and logs of the LP print service.

LP Print Service Directories

The files of the LP print service are distributed among the directories that are shown in the following table.

Table 7.1. Directories for the LP Print Service

Directory

Contents

/usr/bin

The LP print service user commands.

/etc/lp

A hierarchy of LP server configuration files.

/usr/share/lib

The terminfo database directory.

/usr/lib/print

The lp conversion scripts, in.lpd daemon, and the printd daemon. The printd daemon transfers all pending jobs in the/var/spool/print directory once per minute. When no jobs are remaining to transfer, the printd daemon exits.

/usr/sbin

The LP print service administrative commands

/usr/lib/lp

The lpsched program, binary files, PostScript filters, and the model directory, which contains the standard printer interface program.

/var/lp/logs

LP log files such as lpsched. n (which includes messages from lpsched) and requests. n (which includes information about completed print requests).

/var/spool/lp

The spooling directory where files are queued for printing.

/var/spool/print

The staging area for LP print service client-side requests.

/etc/lp/model/uri

The location of the interface script that process device-uri information.

LP Print Service Configuration Files

The lpsched daemon stores configuration information in the /etc/lp directory, as described in the following table.

Caution

The configuration files listed in this table are private interfaces. These files are subject to change in future releases. You should not build software that relies on these files being in their current locations or that relies on the data being in the format currently used.

Table 7.2. Contents of the /etc/lp Directory

File

Type

Description

classes

Directory

Files identifying classes provided by the lpadmin -c command.

fd

Directory

Description of existing filters.

filter.table

File

Print filter look-up table.

forms

Directory

Location to put files for each form. Initially, this directory is empty.

interfaces

Directory

Printer interface program files.

logs

Link to /var/lp/logs

Log files of printing activities.

model

Link to /usr/lib/lp/model

The standard printer interface program.

printers

Directory

Directories for each local printer. Each directory contains configuration information and alert files for an individual printer.

pwheels

Directory

Print wheel files or cartridge files.

ppd

Directory

Each local queue that is configured with a PPD file has a copy of the PPD file placed here.

These configuration files serve a function similar to the /etc/printcap file on lpd-based print servers.

Note

You can check the contents of the configuration files, but you should not edit these files directly. Instead, use the lpadmin command to make configuration changes. Your changes are written to the configuration files in the /etc/lp directory. The lpsched daemon administers and updates the configuration files.

The /etc/lp/printers directory has a subdirectory for each local printer that is known to the system. The following example shows the /etc/lp/printers subdirectories of printers sparc1 and luna.

$ ls -l /etc/lp/printers
drwxrwxr-x 2 lp lp 512 Jan 23 23:53 luna
drwxrwxr-x 2 lp lp 512 Jan 11 17:50 sparc1

The following table describes the files within each printer-specific directory.

File Name

Description

alert.sh

Shell to execute in response to alerts

alert.vars

Alert variables

configuration

Configuration file

users.deny

List of users to whom printer access is denied

comment

Printer description

The configuration file for the printer luna, /etc/lp/printers/luna/configuration, would typically appear as follows:

Banner: on: Always
Content types: PS
Device: /dev/term/b
Interface: /usr/lib/lp/model/standard
Printer type: PS
Modules: default

The terminfo Database

The /usr/share/lib directory contains the terminfo database directory. This directory contains definitions for many types of terminals and printers. The LP print service uses information in the terminfo database to perform the following tasks:

  • Initializes a printer

  • Establishes a selected page size, character pitch, line pitch, and character set

  • Communicates the sequence of codes to a printer

Each printer is identified in the terminfo database with a short name. For a description of the structure of the terminfo database, see Printer Type. If necessary, you can add entries to the terminfo database, but doing so is tedious and time-consuming For more information, see Adding a terminfo Entry for an Unsupported Printer.

Daemons and LP Internal Files

The /usr/lib/lp directory contains daemons and files used by the LP print service, as described in the following table.

Table 7.3. Contents of the /usr/lib/lp Directory

File

Type

Description

bin

Directory

Contains files for generating printing alerts, slow filters, and queue management programs.

model

Directory

Contains the standard printer interface program.

postscript

Directory

Contains all PostScript filter programs provided by the LP print service. These filters come with descriptor files in the /etc/lp/fd directory. These files tell the LP print service the characteristics of the filters and where to locate them.

LP Print Service Log Files

The LP print service maintains two sets of log files that are described in the following table.

Log File Name

Description

syslogd

Set lpr.debug in /etc/syslog.conf to enable LP print service logging

/var/spool/lp

A list of current requests that are in the print queue

/var/lp/logs/requests

An ongoing history of print requests

Print Queue Logs

The scheduler for each system keeps a log of print requests in the /var/spool/lp/tmp/ system and /var/spool/lp/requests/ system directories. Each print request has two files, one file in each directory, that contain information about the request. The information in the /var/spool/lp/requests/ system directory can be accessed only by superuser or lp. The information in the /var/spool/lp/tmp/ system directory can be accessed only by the user who submitted the request, superuser, or lp.

The following example shows the contents of the /var/spool/lp/tmp/starbug directory:

$ ls /var/spool/lp/tmp/starbug
5     5-0
# cat 5-0
C 1
D print1
F /etc/profile
P 20
T /etc/profile
t simple
U root
s 0000
v 2

These files remain in their directories only as long as the print request is in the queue. Once the print request is finished, the information in the files is combined and appended to the /var/lp/logs/requests file. This file is described in the next section.

Use the information in the /var/spool/lp/logs directory if you need to track the status of a print request that is currently in the queue.

History Log Files

The LP print service records a history of printing services in two log files, lpsched and requests. These log files are located in the /var/lp/logs directory. You can use the information in these log files to diagnose and troubleshoot printing problems. An example of the contents of the /var/lp/logs directory is as follows:

# cd /var/lp/logs
# ls
lpsched.1    requests    requests.2
lpsched      lpsched.2   requests.1
# 

The two most important log files for troubleshooting are the following:

  • The lpsched log file — Contains information about local printing requests.

  • The requests log file — Contains information about print requests that are completed and no longer in the print queue.

The requests log file has a simple structure so that you can extract data using common UNIX shell commands. Requests are listed in the order they are printed. They are also separated by lines showing their request IDs. Each line below the separator line, the line that starts with =, is marked with a single letter that identifies the kind of information contained in that line. Each letter is separated from the data by a single space.

The following example shows the contents of a requests log file:

# pwd
/var/lp/logs
# tail requests.2
= print1-3, uid 0, gid 1, size 206662, Wed Mar 14 08:56:30 MST 2003
z print1
C 1
D print1
F /usr/dict/words
P 20
T /usr/dict/words
t simple
U root
s 0x0014
v 2
#

The following table shows the letter codes and the content of their corresponding lines in the requests log file.

Table 7.4. Codes in the requests Log File

Letter

Content of Line

=

The separator line, which contains the following items: request ID, user ID (UID), and group IDs (GIDs) of the user, the total number of bytes in the original (unfiltered) file size, and the time when the request was queued.

z

The name of the printer.

C

The number of copies printed.

D

The printer or class destination, or the word any.

F

The name of the file printed. The line is repeated for each file printed. Files were printed in the order shown.

f

(Optional) The name of the form used.

H

(Optional) One of three types of special handling: resume, hold, and immediate.

N

(Optional) The type of alert used when the print request was successfully completed. The type is the letter M if the user was notified by email or W if the user was notified by a message to the terminal.

O

(Optional) The printer-dependent o options. For example, nobanner.

P

The priority of the print request.

p

The list of pages printed.

r

(Optional) A single-letter line that is included if the user asked for “raw” processing of the files with the lp -r command.

S

(Optional) The character set, print wheel, or cartridge used.

T

The title placed on the banner page.

t

The type of content found in the files.

U

The name of the user who submitted the print request.

s

The outcome of the request, shown as a combination of individual bits expressed in hexadecimal format. Several bits are used internally by the print service. The bits and what they mean are described in the following table.

v

  • 0 — Identifies that the print job originated from the in.1pd print daemon or another system on the network.

  • 2 — Identifies that the print job originated from the /usr/bin/lp or /usr/ucb/lpr commands.

  • 1 — Identifies that the print job originated from an older version of the print software.

x

(Optional) The slow filter used for the print request.

Y

(Optional) The list of special modes for the print filters used to print the request.

z

(Optional) The printer used for the request. This printer differs from the destination (the D line) if the request was queued for any printer or a class of printers, or if the request was moved to another destination.

The following table shows the outcome codes in the LP requests log file and their descriptions.

Table 7.5. Outcome Codes in the requests Log File

Outcome Code

Description

0x0001

The request was held pending resume.

0x0002

Slow filtering is running.

0x0004

Slow filtering finished successfully.

0x0008

The request is on the printer.

0x0010

Printing finished successfully.

0x0020

The request was held pending user change.

0x0040

The request was canceled.

0x0080

The request will print next.

0x0100

The request failed filtering or printing.

0x0200

The request is in transit to a remote printer (obsolete).

0x0400

The user will be notified.

0x0800

A notification is running.

0x1000

A remote system has accepted the request (obsolete).

0x2000

The administrator placed a hold on the request.

0x4000

The printer had to change filters.

0x8000

The request is temporarily stopped.

Spooling Directories

Files queued for printing are stored in the /var/spool/lp directory until they are printed, which might be only seconds. The following table shows the contents of the /var/spool/lp directory.

Table 7.6. Contents of the /var/spool/lp Directory

File

Type

Description

SCHEDLOCK

File

Lock file for the scheduler. Check for this file if the scheduler terminates and will not restart.

admins

Directory

Link to /etc/lp .

bin

Directory

Link to /usr/lib/lp/bin .

logs

Link

Link to ../lp/logs where completed print requests are logged.

model

Link

Link to /usr/lib/lp/model .

requests

Directory

Directory that contains subdirectories for each configured printer where print requests are logged until printed. Users cannot access this log.

system

Directory

A print status file for the system.

temp

Link

Link to /var/spool/lp/tmp/ hostname, which contains the spooled requests.

tmp

Directory

Directory for each configured printer where print requests are logged until printed. Changes to existing print requests are also recorded in this directory.