运城市网站建设_网站建设公司_需求分析_seo优化
2026/1/2 13:34:36 网站建设 项目流程

【Linux命令大全】002.文件传输之lpr命令(实操篇)

✨ 本文为Linux系统文件传输命令的全面汇总与深度优化,结合图标、结构化排版与实用技巧,专为高级用户和系统管理员打造。

(关注不迷路哈!!!)

文章目录

  • 【Linux命令大全】002.文件传输之lpr命令(实操篇)
    • 一、功能与作用
    • 二、基本用法
      • 1. 打印单个文件
      • 2. 指定打印机
      • 3. 指定打印份数
      • 4. 从标准输入打印
      • 5. 设置打印作业名称
    • 三、高级用法
      • 1. 打印完成后删除原文件
      • 2. 打印完成后发送邮件通知
      • 3. 按原样打印文件
      • 4. 设置打印机特定选项
      • 5. 组合使用多个参数
      • 6. 打印多个文件
      • 7. 打印时不打印标题页
    • 四、实际应用场景
      • 1. 批量打印脚本
      • 2. 打印服务器客户端配置
      • 3. 定时打印任务
      • 4. 打印质量控制
    • 五、注意事项与最佳实践
      • 1. 命令可用性
      • 2. 与CUPS的兼容性
      • 3. 打印机配置检查
      • 4. 打印队列监控
      • 5. 打印作业管理
      • 6. 大文件处理
    • 六、常见错误与解决方案
      • 1. 命令未找到
      • 2. 打印机不可用
      • 3. 权限被拒绝
      • 4. 打印作业卡住
      • 5. 格式错误
    • 七、总结

一、功能与作用

lpr命令是行式打印机请求工具(Line Printer Request),用于将文件发送到Linux系统中的打印队列进行打印。它是传统Unix打印系统(LPR/LPD)的核心组件之一,负责接收用户的打印请求并将文件传输到指定的打印机队列中。lpr命令支持多种文件格式,能够处理文本文件、PostScript文件、PDF文件等多种类型的文档,是Linux系统中最常用的打印命令之一。

参数详解

参数说明
-P printer指定打印机名称
-# number指定打印份数,number为正整数
-C name设置打印任务名称
-J name设置作业名称
-T title设置文档标题
-l按原样打印文件,不进行过滤处理
-r打印完成后删除原文件
-m打印完成后发送邮件通知
-h打印时不打印标题页
-o option设置打印机特定选项,如双面打印等
-E加密连接到打印服务器(在CUPS中使用)

二、基本用法

1. 打印单个文件

最基本的lpr命令用法是直接指定要打印的文件名:

# 打印单个文件lprdocument.txt

这个命令会将document.txt文件发送到默认打印机的队列中等待打印。

2. 指定打印机

使用-P参数可以指定要使用的打印机:

# 指定打印机打印文件lpr-Plaserjet report.pdf

3. 指定打印份数

使用-#参数可以指定打印的份数:

# 打印3份文件lpr-# 3 presentation.pptx

4. 从标准输入打印

lpr命令还支持从标准输入接收内容进行打印:

# 从标准输入打印catnotes.txt|lpr# 打印命令输出ls-la|lpr

5. 设置打印作业名称

使用-J参数可以设置打印作业的名称,便于在打印队列中识别:

# 设置打印作业名称lpr-J"Weekly Report"report.docx

三、高级用法

1. 打印完成后删除原文件

使用-r参数可以在打印完成后自动删除原文件,适用于临时文件或不需要保留的文档:

# 打印完成后删除原文件lpr-rtemporary_report.txt

2. 打印完成后发送邮件通知

使用-m参数可以在打印完成后发送邮件通知:

# 打印完成后发送邮件通知lpr-mimportant_document.pdf

3. 按原样打印文件

使用-l参数可以指示打印机按文件的原样进行打印,不进行任何过滤或格式化处理,适用于已经预先格式化的文档:

# 按原样打印文件lpr-lpreformatted.ps

4. 设置打印机特定选项

使用-o参数可以设置打印机特定的选项,如双面打印、页面大小等。具体可用的选项取决于打印机型号和驱动程序:

# 设置双面打印lpr-osides=two-sided-long-edge document.pdf# 设置页面大小为A4lpr-omedia=A4 report.docx# 设置打印质量lpr-oprint-quality=best photo.jpg

5. 组合使用多个参数

可以根据需要组合使用多个参数,实现更复杂的打印需求:

# 打印2份文档,使用双面打印,发送到指定打印机,设置作业名称lpr-Pcolorjet -# 2 -o sides=two-sided-long-edge -J "Quarterly Budget" budget.pdf

6. 打印多个文件

可以一次指定多个文件进行打印:

# 打印多个文件lprfile1.txt file2.txt file3.txt

7. 打印时不打印标题页

使用-h参数可以在打印时不打印标题页,适用于不需要包含作业信息的场景:

# 不打印标题页lpr-hdocument.txt

四、实际应用场景

1. 批量打印脚本

可以编写一个简单的脚本来批量打印多个文件:

#!/bin/bash# 批量打印脚本# 检查参数if[$#-lt1];thenecho"Usage:$0<file1> [file2] [file3] ..."exit1fi# 打印所有指定的文件forfilein"$@";doif[-f"$file"];thenecho"Printing$file..."lpr"$file"if[$?-eq0];thenecho" Done."elseecho" Failed to print$file."fielseecho"Warning:$fileis not a valid file. Skipping."fidone# 显示打印队列状态echo"\nCurrent print queue status:"lpd

使用示例:

# 授予执行权限chmod+x batch_print.sh# 批量打印文件./batch_print.sh report1.pdf report2.pdf presentation.pptx

2. 打印服务器客户端配置

可以编写一个脚本,帮助用户快速配置打印客户端并连接到指定的打印服务器:

#!/bin/bash# 配置LPR打印客户端# 检查参数if[$#-ne3];thenecho"Usage:$0<printer_name> <server_address> <queue_name>"echo"Example:$0laserjet printserver.example.com lp"exit1fiPRINTER_NAME=$1SERVER_ADDRESS=$2QUEUE_NAME=$3# 检查是否已安装lpr包if!command-vlpr&>/dev/null;thenecho"Installing lpr package..."if[-f/etc/debian_version];thensudoapt-getupdatesudoapt-getinstall-ylprelif[-f/etc/redhat-release];thensudoyuminstall-ylprfifi# 配置打印队列CONFIG_FILE="/etc/printcap"BACKUP_FILE="/etc/printcap.bak"# 备份现有配置if[-f"$CONFIG_FILE"];thensudocp"$CONFIG_FILE""$BACKUP_FILE"echo"Backed up current printcap to$BACKUP_FILE"fi# 添加新的打印机配置echo"Adding printer configuration to$CONFIG_FILE..."sudotee-a"$CONFIG_FILE">/dev/null<<EOL$PRINTER_NAME|Network Printer$PRINTER_NAME: :rm=$SERVER_ADDRESS: :rp=$QUEUE_NAME: :sd=/var/spool/lpd/$PRINTER_NAME: :lf=/var/log/lpd-errs: :mx#0: :sh: EOL# 创建spool目录echo"Creating spool directory..."sudomkdir-p/var/spool/lpd/$PRINTER_NAMEsudochowndaemon:daemon /var/spool/lpd/$PRINTER_NAMEsudochmod775/var/spool/lpd/$PRINTER_NAME# 重启lpd服务echo"Restarting lpd service..."sudokillalllpd2>/dev/nullsudolpd# 测试打印echo"Testing printer configuration..."echo"This is a test page from$HOSTNAME"|lpr-P$PRINTER_NAMEif[$?-eq0];thenecho"\nPrinter configuration completed successfully!"echo"You can now print to$PRINTER_NAMEusing: lpr -P$PRINTER_NAME<file>"elseecho"\nFailed to send test print job. Please check your configuration."fi

3. 定时打印任务

可以使用cron和lpr命令设置定时打印任务,例如每天自动打印报表:

#!/bin/bash# 每日报表打印脚本REPORT_FILE="/path/to/daily_report.pdf"PRINTER_NAME="laserjet"LOG_FILE="/var/log/daily_print.log"# 检查报表文件是否存在if[!-f"$REPORT_FILE"];thenecho"[$(date)] Error: Report file$REPORT_FILEnot found.">>$LOG_FILEexit1fi# 发送打印请求lpr-P$PRINTER_NAME-J"Daily Report$(date+%Y-%m-%d)"$REPORT_FILEif[$?-eq0];thenecho"[$(date)] Successfully printed daily report.">>$LOG_FILEelseecho"[$(date)] Failed to print daily report.">>$LOG_FILE# 可以选择发送通知邮件echo"Daily report printing failed on$(hostname)"|mail-s"Print Job Failure"admin@example.comfi

然后通过cron设置定时任务:

# 编辑crontab配置crontab-e# 添加以下行,每天早上9点执行打印任务09* * * /path/to/daily_report_print.sh

4. 打印质量控制

可以编写一个脚本,根据文档类型自动设置合适的打印选项:

#!/bin/bash# 智能打印脚本 - 根据文件类型自动设置打印选项# 检查参数if[$#-lt1];thenecho"Usage:$0<file> [printer]"exit1fiFILE=$1PRINTER=${2:-default}# 获取文件类型FILE_TYPE=$(file-b"$FILE")# 根据文件类型设置打印选项case"$FILE_TYPE"in*PDF*)# PDF文件OPTIONS="-o fit-to-page"echo"Printing PDF file with fit-to-page option";;*PostScript*)# PostScript文件OPTIONS="-l"echo"Printing PostScript file as raw data";;*image*)# 图像文件OPTIONS="-o print-quality=best"echo"Printing image file with best quality";;*text*)# 文本文件OPTIONS="-o page-left=36 -o page-right=36 -o page-top=36 -o page-bottom=36"echo"Printing text file with margins";;*)# 其他文件类型OPTIONS=""echo"Printing unknown file type with default options";;esac# 执行打印命令if["$PRINTER"="default"];thenlpr$OPTIONS"$FILE"elselpr-P$PRINTER$OPTIONS"$FILE"fi# 检查打印是否成功if[$?-eq0];thenecho"Print job submitted successfully"elseecho"Failed to submit print job"exit1fi

五、注意事项与最佳实践

1. 命令可用性

lpr命令在大多数Linux发行版中默认安装,但可能需要安装额外的软件包才能使用全部功能。如果系统上未找到该命令,请安装相应的软件包:

# 在Debian/Ubuntu系统上安装sudoapt-getupdatesudoapt-getinstall-ylpr# 在CentOS/RHEL系统上安装sudoyuminstall-ylpr

2. 与CUPS的兼容性

现代Linux系统通常使用CUPS作为默认打印系统。CUPS提供了与传统LPR/LPD命令兼容的接口,但某些参数和行为可能有所不同。如果在使用lpr命令时遇到问题,可以尝试使用CUPS的原生命令lp

# CUPS等效命令lp document.txt# 打印文件lp-dprinter_name document.txt# 指定打印机打印lp-n3document.txt# 打印3份

3. 打印机配置检查

在使用lpr命令前,建议先检查系统上配置的打印机列表,确认要使用的打印机名称正确:

# 查看可用的打印机(LPR/LPD系统)lpq-a# 查看可用的打印机(CUPS系统)lpstat-p-d

4. 打印队列监控

提交打印作业后,可以使用lpq命令监控打印队列状态,确认作业是否成功提交并了解打印进度:

# 查看打印队列状态lpq# 查看特定打印机的队列状态lpq-Pprinter_name

5. 打印作业管理

如果需要取消已提交的打印作业,可以使用lprm命令:

# 取消当前用户的所有打印作业lprm-# 取消特定的打印作业lprmjob_id# 取消特定打印机上的特定作业sudolprm-Pprinter_name job_id

6. 大文件处理

对于大型文档,建议在打印前进行适当的压缩或分割,以提高打印效率并减少系统资源占用:

# 压缩PDF文件后打印pdfcompress large_document.pdf compressed.pdflprcompressed.pdf# 分割大文件后逐部分打印split-l1000large_file.txt part_lprpart_*# 打印所有部分

六、常见错误与解决方案

1. 命令未找到

问题现象:执行lpr命令时显示"command not found"错误。

解决方案

  • 确认是否安装了lpr软件包
  • 检查命令是否在系统PATH中
# 查找lpr命令位置whichlpr# 或find/-namelpr2>/dev/null# 安装lpr包(如果尚未安装)sudoapt-getinstalllpr# Debian/Ubuntusudoyuminstalllpr# CentOS/RHEL

2. 打印机不可用

问题现象:执行lpr命令时显示"printer not available"或类似错误。

解决方案

  • 确认打印机名称是否正确
  • 检查打印机是否已连接并处于就绪状态
  • 验证打印服务是否正在运行
# 查看可用的打印机lpq-a# 检查打印服务状态systemctl status lpd# 对于LPR/LPD系统systemctl status cups# 对于CUPS系统

3. 权限被拒绝

问题现象:执行lpr命令时显示"permission denied"错误。

解决方案

  • 确认当前用户有足够的权限使用打印机
  • 检查打印队列的权限设置
  • 验证文件权限是否允许读取要打印的文件
# 检查文件权限ls-ldocument.txt# 检查打印队列权限ls-la/var/spool/lpd/# 使用sudo尝试打印sudolprdocument.txt

4. 打印作业卡住

问题现象:打印作业已提交到队列,但长时间未完成打印。

解决方案

  • 检查打印机是否有卡纸、缺纸等问题
  • 查看打印队列状态,确认作业是否在队列中
  • 尝试取消卡住的作业并重新提交
# 查看打印队列状态lpq# 取消卡住的作业lprmjob_id# 重启打印服务sudosystemctl restart lpd# 对于LPR/LPD系统sudosystemctl restart cups# 对于CUPS系统

5. 格式错误

问题现象:打印出的文档格式不正确或乱码。

解决方案

  • 确认文件格式与打印机兼容
  • 尝试使用-l参数按原样打印
  • 对于文本文件,可以尝试使用a2ps等工具进行格式化后再打印
# 按原样打印文件lpr-ldocument.txt# 使用a2ps格式化文本文件后打印a2ps document.txt|lpr

七、总结

lpr命令是Linux系统中用于提交打印作业的重要工具,通过它可以方便地将各种类型的文件发送到打印机进行打印。无论是普通用户还是系统管理员,掌握lpr命令的使用都能帮助提高打印资源的利用效率和管理水平。

在实际应用中,可以结合其他打印命令如lpqlprm,以及编写简单的自动化脚本,实现更高效的打印工作流。同时,需要注意与现代CUPS打印系统的兼容性问题,以及在网络环境中的使用限制。通过合理配置和使用lpr命令,可以确保打印任务的顺利完成和打印资源的有效管理。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询