Back to Knowledege base

Diagnosing Why Jobs Won't Print

Understanding job selection and resolving stuck jobs

Understanding Job Selection

For a job to print, several conditions must be met:

Printer requirements:

  • Printer in Idle state (not Halted, Error, or Offline)
  • Correct form type loaded
  • Sufficient permissions to access printer

Job requirements:

  • Form type matches available printer
  • Job not held
  • User has print privileges
  • Class codes compatible (if configured)
  • Job size within printer limits (if configured)
  • Priority allows selection

Common Reasons Jobs Don't Print

No suitable printer:

  • No printer configured for job's form type
  • All printers for form type are halted/offline/error

Form type mismatch:

  • Job requests "a4.ps" but all printers loaded with "letter.ps"

Job on hold:

  • User or admin placed job on hold

Printer assignment issues:

  • Job assigned to specific printer that's unavailable
  • Assigned printer has different form type loaded

Class code restrictions:

  • Job has class code that no available printer permits

Load level constraints:

  • Printer has size limits that exclude this job

Permission issues:

  • User lacks permission to print on available printers

Diagnostic Approach

Step 1: Check Job Details

bash

# View specific job
sqlist <job_number>

# Look for:
# - Form type
# - Printer assignment (may be blank)
# - Priority
# - Class code
# - Job state/status

Example output:

Job: 15033
User: jsmith
Title: Report
Form: a4.ps
Pages: 1385
Copies: 1
Priority: 150
Printer: [blank or specific printer]

Step 2: Check Available Printers

bash

# View printers with current form types
splist

# Or in spq, switch to printer view (press 'o')

Look for:

  • Printers in Idle state
  • Form types loaded on each printer
  • Any printers halted/offline/error

Step 3: Match Form Types

Job will only print on printer with matching form type:

Job form: a4.ps Available printers:

ptr1  <lp0>  a4.ps     idle       ← Match! Should print here
ptr2  <lp1>  letter.ps idle       ← No match
ptr3  <lp2>  a4.ps     halted     ← Match but halted

Job should print on ptr1.

Step 4: Check Job Status

bash

# View job in queue
sqlist -H

# Look at job position and state

If job shows but isn't printing:

  • Check printer state
  • Verify form type match
  • Look for hold status

Step 5: Check System Log

bash

tail -50 /var/spool/spd/spshed_reps

# Look for messages about:
# - Job selection
# - Printer errors
# - Permission denials

Resolving Common Scenarios

Scenario 1: No Printer for Form Type

Symptom:

Job sits in queue, no printer available with matching form type.

bash

sqlist 15033
# Form: labels.ps

splist
# ptr1: a4.ps
# ptr2: letter.ps
# No printer with labels.ps

Solutions:

Option A: Change job form type

bash

sqchange -f a4.ps 15033

Job should immediately print on ptr1 (if idle).

Option B: Change printer form type

bash

# Halt printer
sphalt ptr1

# Change form type
sqchange -f labels.ps ptr1

# Start printer
spstart ptr1

Printer will start and job should print.

Option C: Add new printer

bash

# Add printer for labels form
spadd -p labels-ptr -d /dev/lp2 -f labels.ps

# Start it
spstart labels-ptr

Scenario 2: All Printers Halted

Symptom:

bash

splist
# All printers show "halted" state
# Jobs accumulate in queue

Solution:

Start printers:

bash

# Start all printers
spstart

# Or start specific printer
spstart ptr1

Scenario 3: Job Assigned to Wrong Printer

Symptom:

bash

sqlist 15033
# Printer: ptr2

splist ptr2
# State: halted

Job assigned to specific printer that's halted.

Solution:

Option A: Unassign job (let scheduler choose)

bash

sqchange -p "" 15033

Job will print on any idle printer with correct form type.

Option B: Start assigned printer

bash

spstart ptr2

Job will print when printer ready.

Option C: Reassign to different printer

bash

sqchange -p ptr1 15033

Scenario 4: Job On Hold

Symptom:

Job doesn't advance even with suitable printer available.

bash

sqlist 15033
# May show "held" indicator

Solution:

Release hold:

bash

# In spq: select job, press 'y' to release hold
# Or command line (specific release command varies)

Check with user why job was held before releasing.

Scenario 5: Class Code Mismatch

Symptom:

Suitable printer exists but job doesn't print.

bash

sqlist 15033
# Class: A

splist ptr1
# Class: B

Job class code doesn't match printer class code.

Solution:

Option A: Change job class

bash

sqchange -c B 15033

Option B: Change printer class

bash

# Halt printer
sphalt ptr1

# Change class
sqchange -c A ptr1

# Start printer
spstart ptr1

Option C: Clear printer class (allow all)

bash

sphalt ptr1
sqchange -c "" ptr1
spstart ptr1

Scenario 6: Priority Issues

Symptom:

Lower priority jobs printing before higher priority job.

This shouldn't happen - check job priority:

bash

sqlist 15033
# Priority: 50  ← Very low

# Other jobs:
sqlist 15034
# Priority: 150  ← Higher, prints first

Solution:

Increase job priority:

bash

sqchange -p 200 15033

Higher priority jobs print first when printer becomes available.

Scenario 7: Size Limits

Symptom:

Job too large or too small for printer limits.

bash

splist ptr1
# Shows: >  (upper limit active)
# or:    <  (lower limit active)

Solution:

Check limits:

bash

# View printer details
splist -v ptr1
# Shows size limits if configured

Remove limits:

bash

# In spq, select printer
# Press 'L' (lower limit), enter 0
# Press 'U' (upper limit), enter 0

Or halt, change limits, restart printer.

Systematic Troubleshooting Checklist

Use this checklist for stuck jobs:

1. Job Details

  • Note job number, form type, printer assignment
  • Check job not on hold
  • Verify job priority reasonable

2. Printer Availability

  • At least one printer in Idle state
  • Printer has matching form type
  • Printer not in error or offline

3. Form Type Match

  • Job form type matches available printer
  • Form type exists in printer configuration

4. Assignment Check

  • If job assigned, that printer is available
  • If unassigned, suitable printer exists

5. Class Codes

  • Job class code compatible with printer
  • Or class codes not used

6. Size Limits

  • Job size within printer limits
  • Or no limits configured

7. Permissions

  • User has permission to print
  • Printer accessible to user's class

Verification After Resolution

After making changes:

bash

# Watch queue
watch -n 2 'sqlist -H; echo ""; splist'

# Job should:
# 1. Appear on printer (Printing state)
# 2. Show in sqlist with printer name
# 3. Eventually disappear when complete

Best Practices

Use generic assignments:

Let Xi-Text choose printer automatically (don't assign to specific printer unless necessary).

Standardize form types:

Use consistent form type names across all printers.

Monitor queue regularly:

bash

# Simple queue check
sqlist -H | wc -l
# Shows number of pending jobs

Keep printers running:

Start all printers at system boot, halt only when necessary (form type changes, maintenance).

Document form types:

Maintain list of which form types exist and their purposes.

Train users:

Ensure users know correct form types to request for different paper/output needs.

Understanding Offline State vs Error State
Distinguishing between offline detection and error conditions