2026/6/20 13:04:30
网站建设
项目流程
化纤公司网站建设,企业建设高端网站的目的,visual制作网站开发,小企业网站建设一般收费【Linux命令大全】002.文件传输之lpr命令#xff08;实操篇#xff09; ✨ 本文为Linux系统文件传输命令的全面汇总与深度优化#xff0c;结合图标、结构化排版与实用技巧#xff0c;专为高级用户和系统管理员打造。 (关注不迷路哈#xff01;#xff01;#xff01;) 文…【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.pdf3. 指定打印份数使用-#参数可以指定打印的份数# 打印3份文件lpr-# 3 presentation.pptx4. 从标准输入打印lpr命令还支持从标准输入接收内容进行打印# 从标准输入打印catnotes.txt|lpr# 打印命令输出ls-la|lpr5. 设置打印作业名称使用-J参数可以设置打印作业的名称便于在打印队列中识别# 设置打印作业名称lpr-JWeekly Reportreport.docx三、高级用法1. 打印完成后删除原文件使用-r参数可以在打印完成后自动删除原文件适用于临时文件或不需要保留的文档# 打印完成后删除原文件lpr-rtemporary_report.txt2. 打印完成后发送邮件通知使用-m参数可以在打印完成后发送邮件通知# 打印完成后发送邮件通知lpr-mimportant_document.pdf3. 按原样打印文件使用-l参数可以指示打印机按文件的原样进行打印不进行任何过滤或格式化处理适用于已经预先格式化的文档# 按原样打印文件lpr-lpreformatted.ps4. 设置打印机特定选项使用-o参数可以设置打印机特定的选项如双面打印、页面大小等。具体可用的选项取决于打印机型号和驱动程序# 设置双面打印lpr-osidestwo-sided-long-edge document.pdf# 设置页面大小为A4lpr-omediaA4 report.docx# 设置打印质量lpr-oprint-qualitybest photo.jpg5. 组合使用多个参数可以根据需要组合使用多个参数实现更复杂的打印需求# 打印2份文档使用双面打印发送到指定打印机设置作业名称lpr-Pcolorjet -# 2 -o sidestwo-sided-long-edge -J Quarterly Budget budget.pdf6. 打印多个文件可以一次指定多个文件进行打印# 打印多个文件lprfile1.txt file2.txt file3.txt7. 打印时不打印标题页使用-h参数可以在打印时不打印标题页适用于不需要包含作业信息的场景# 不打印标题页lpr-hdocument.txt四、实际应用场景1. 批量打印脚本可以编写一个简单的脚本来批量打印多个文件#!/bin/bash# 批量打印脚本# 检查参数if[$#-lt1];thenechoUsage:$0file1 [file2] [file3] ...exit1fi# 打印所有指定的文件forfilein$;doif[-f$file];thenechoPrinting$file...lpr$fileif[$?-eq0];thenecho Done.elseecho Failed to print$file.fielseechoWarning:$fileis not a valid file. Skipping.fidone# 显示打印队列状态echo\nCurrent print queue status:lpd使用示例# 授予执行权限chmodx batch_print.sh# 批量打印文件./batch_print.sh report1.pdf report2.pdf presentation.pptx2. 打印服务器客户端配置可以编写一个脚本帮助用户快速配置打印客户端并连接到指定的打印服务器#!/bin/bash# 配置LPR打印客户端# 检查参数if[$#-ne3];thenechoUsage:$0printer_name server_address queue_nameechoExample:$0laserjet printserver.example.com lpexit1fiPRINTER_NAME$1SERVER_ADDRESS$2QUEUE_NAME$3# 检查是否已安装lpr包if!command-vlpr/dev/null;thenechoInstalling lpr package...if[-f/etc/debian_version];thensudoapt-getupdatesudoapt-getinstall-ylprelif[-f/etc/redhat-release];thensudoyuminstall-ylprfifi# 配置打印队列CONFIG_FILE/etc/printcapBACKUP_FILE/etc/printcap.bak# 备份现有配置if[-f$CONFIG_FILE];thensudocp$CONFIG_FILE$BACKUP_FILEechoBacked up current printcap to$BACKUP_FILEfi# 添加新的打印机配置echoAdding printer configuration to$CONFIG_FILE...sudotee-a$CONFIG_FILE/dev/nullEOL$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目录echoCreating spool directory...sudomkdir-p/var/spool/lpd/$PRINTER_NAMEsudochowndaemon:daemon /var/spool/lpd/$PRINTER_NAMEsudochmod775/var/spool/lpd/$PRINTER_NAME# 重启lpd服务echoRestarting lpd service...sudokillalllpd2/dev/nullsudolpd# 测试打印echoTesting printer configuration...echoThis is a test page from$HOSTNAME|lpr-P$PRINTER_NAMEif[$?-eq0];thenecho\nPrinter configuration completed successfully!echoYou can now print to$PRINTER_NAMEusing: lpr -P$PRINTER_NAMEfileelseecho\nFailed to send test print job. Please check your configuration.fi3. 定时打印任务可以使用cron和lpr命令设置定时打印任务例如每天自动打印报表#!/bin/bash# 每日报表打印脚本REPORT_FILE/path/to/daily_report.pdfPRINTER_NAMElaserjetLOG_FILE/var/log/daily_print.log# 检查报表文件是否存在if[!-f$REPORT_FILE];thenecho[$(date)] Error: Report file$REPORT_FILEnot found.$LOG_FILEexit1fi# 发送打印请求lpr-P$PRINTER_NAME-JDaily Report$(date%Y-%m-%d)$REPORT_FILEif[$?-eq0];thenecho[$(date)] Successfully printed daily report.$LOG_FILEelseecho[$(date)] Failed to print daily report.$LOG_FILE# 可以选择发送通知邮件echoDaily report printing failed on$(hostname)|mail-sPrint Job Failureadminexample.comfi然后通过cron设置定时任务# 编辑crontab配置crontab-e# 添加以下行每天早上9点执行打印任务09* * * /path/to/daily_report_print.sh4. 打印质量控制可以编写一个脚本根据文档类型自动设置合适的打印选项#!/bin/bash# 智能打印脚本 - 根据文件类型自动设置打印选项# 检查参数if[$#-lt1];thenechoUsage:$0file [printer]exit1fiFILE$1PRINTER${2:-default}# 获取文件类型FILE_TYPE$(file-b$FILE)# 根据文件类型设置打印选项case$FILE_TYPEin*PDF*)# PDF文件OPTIONS-o fit-to-pageechoPrinting PDF file with fit-to-page option;;*PostScript*)# PostScript文件OPTIONS-lechoPrinting PostScript file as raw data;;*image*)# 图像文件OPTIONS-o print-qualitybestechoPrinting image file with best quality;;*text*)# 文本文件OPTIONS-o page-left36 -o page-right36 -o page-top36 -o page-bottom36echoPrinting text file with margins;;*)# 其他文件类型OPTIONSechoPrinting unknown file type with default options;;esac# 执行打印命令if[$PRINTERdefault];thenlpr$OPTIONS$FILEelselpr-P$PRINTER$OPTIONS$FILEfi# 检查打印是否成功if[$?-eq0];thenechoPrint job submitted successfullyelseechoFailed to submit print jobexit1fi五、注意事项与最佳实践1. 命令可用性lpr命令在大多数Linux发行版中默认安装但可能需要安装额外的软件包才能使用全部功能。如果系统上未找到该命令请安装相应的软件包# 在Debian/Ubuntu系统上安装sudoapt-getupdatesudoapt-getinstall-ylpr# 在CentOS/RHEL系统上安装sudoyuminstall-ylpr2. 与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-d4. 打印队列监控提交打印作业后可以使用lpq命令监控打印队列状态确认作业是否成功提交并了解打印进度# 查看打印队列状态lpq# 查看特定打印机的队列状态lpq-Pprinter_name5. 打印作业管理如果需要取消已提交的打印作业可以使用lprm命令# 取消当前用户的所有打印作业lprm-# 取消特定的打印作业lprmjob_id# 取消特定打印机上的特定作业sudolprm-Pprinter_name job_id6. 大文件处理对于大型文档建议在打印前进行适当的压缩或分割以提高打印效率并减少系统资源占用# 压缩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/RHEL2. 打印机不可用问题现象执行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.txt4. 打印作业卡住问题现象打印作业已提交到队列但长时间未完成打印。解决方案检查打印机是否有卡纸、缺纸等问题查看打印队列状态确认作业是否在队列中尝试取消卡住的作业并重新提交# 查看打印队列状态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命令的使用都能帮助提高打印资源的利用效率和管理水平。在实际应用中可以结合其他打印命令如lpq和lprm以及编写简单的自动化脚本实现更高效的打印工作流。同时需要注意与现代CUPS打印系统的兼容性问题以及在网络环境中的使用限制。通过合理配置和使用lpr命令可以确保打印任务的顺利完成和打印资源的有效管理。