Linux lpq命令用于显示打印队列中作业的状态信息,是CUPS打印系统中的重要管理工具。
lpq [选项] [作业号] [用户名]
| 选项 | 说明 |
|---|---|
-E |
强制加密连接到服务器 |
-P 打印机 |
指定打印机名称 |
-a |
显示所有打印队列 |
-l |
显示详细信息 |
+间隔 |
定期刷新显示(单位:秒) |
-U 用户名 |
指定要查看的用户名 |
--help |
显示帮助信息 |
# 查看默认打印队列状态
lpq
# 输出示例:
# Rank Owner Job File(s) Total Size
# active alice 123 report.pdf 102400 bytes
# 1st bob 124 document.txt 20480 bytes
# 2nd charlie 125 image.jpg 512000 bytes
# 查看指定打印机的队列
lpq -P HP_LaserJet
# 查看所有打印机的队列
lpq -a
# 输出示例:
# HP_LaserJet is ready and printing
# Rank Owner Job File(s) Total Size
# active alice 456 presentation.pdf 2048000 bytes
# 显示队列的详细信息
lpq -l
# 输出示例:
# HP_LaserJet: ready
# alice: 1st [job 456 localhost]
# presentation.pdf 2048000 bytes
# Fri Dec 15 14:30:00 2023
# bob: 2nd [job 457 localhost]
# invoice.pdf 512000 bytes
# Fri Dec 15 14:35:00 2023
# 每5秒刷新一次队列状态
lpq +5
# 每2秒刷新一次特定打印机状态
lpq -P Office_Printer +2
# 按Ctrl+C停止刷新
# 查看alice用户的打印作业
lpq -U alice
# 结合打印机指定和用户过滤
lpq -P Color_Printer -U bob
# 查看作业号123的详细信息
lpq 123
# 输出示例:
# Job 123 is currently being printed
# Owner: alice
# File: annual_report.pdf
# Size: 5120000 bytes
# Submitted: Fri Dec 15 14:25:00 2023
# 1. 提交打印作业
lpr -P Office_Printer document.pdf
# 2. 立即查看作业状态
lpq -P Office_Printer
# 3. 如果需要取消作业,获取作业号
# 假设lpq显示作业号为789
# 4. 取消错误的打印作业
lprm 789
# 5. 重新提交正确的文档
lpr -P Office_Printer corrected_document.pdf
# 6. 监控打印进度
lpq -P Office_Printer +3
#!/bin/bash
# 监控打印队列的脚本
PRINTER="HP_LaserJet"
CHECK_INTERVAL=10 # 检查间隔(秒)
MAX_JOBS=5 # 最大允许作业数
while true; do
# 获取当前作业数量
JOB_COUNT=$(lpq -P "$PRINTER" | grep -c '^[0-9]')
echo "$(date): 打印机 $PRINTER 队列中有 $JOB_COUNT 个作业"
if [ "$JOB_COUNT" -gt "$MAX_JOBS" ]; then
echo "警告:队列作业数超过 $MAX_JOBS,发送通知..."
# 这里可以添加发送邮件或其他通知的代码
fi
# 显示前3个作业的详细信息
lpq -P "$PRINTER" | head -5
sleep "$CHECK_INTERVAL"
done
# 分析打印队列中的文件类型
lpq -l | grep "File:" | awk '{print $2}' | awk -F. '{print $NF}' | sort | uniq -c
# 计算队列中所有作业的总大小
lpq -l | grep "bytes" | awk '{sum += $NF} END {print "总大小: " sum/1024 " KB"}'
# 查找等待时间最长的作业
lpq -l | grep "Submitted:" | sort -k2
| 字段 | 说明 | 示例 |
|---|---|---|
| Rank | 作业在队列中的位置 active: 正在打印 1st, 2nd, 3rd...: 等待顺序 |
active, 1st, 2nd |
| Owner | 提交作业的用户名 | alice, bob, charlie |
| Job | 作业编号(用于lprm命令) | 123, 456, 789 |
| File(s) | 打印的文件名 | document.pdf, report.txt |
| Total Size | 作业总大小(字节) | 102400 bytes |
| Status | 作业状态(在详细信息中) | processing, waiting, completed |
| Submitted | 提交时间(在详细信息中) | Fri Dec 15 14:30:00 2023 |
+间隔选项时,按Ctrl+C可以停止刷新可能原因: CUPS服务未运行
解决: 启动CUPS服务
sudo systemctl start cups
lpq
解决: 启用打印机
cupsenable 打印机名
cupsaccept 打印机名
解决: 清除队列并重新提交
# 删除所有作业
lprm -
# 重启打印服务
sudo systemctl restart cups
解决: 检查打印机名称是否正确
# 列出所有可用打印机
lpstat -p -d
# 使用正确的打印机名称
lpq -P 正确打印机名
lpr - 提交打印作业lprm - 删除打印作业lpstat - 显示打印机状态信息lp - System V风格的打印命令cancel - 取消打印作业lpadmin - 打印机管理工具