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.