Linux打印的介绍

打印对于Linux/Unix类系统来说,曾经没有一点问题,但那是很久以前的事情了。随着各种新型打印机的出现,特别是很多不支持PostScript功能的廉价打印机,曾一度使在Linux上的打印变得非常困难。但现在,情况已经完全不同了,在Linux上打印已经越来越方便,用Linux作为打印服务器,已经成为很多大小企业的选择。

在具体讲述如何安装打印机之前,先来看一下对于打印的一些比较关键的问题。

  • 打印机的命令方式:从总体上来看,打印的命令方式可以分成文本、PostScript和其它种类。所谓文本,就是那些比较古老的针式打印机,我们可以直接 cat text_file > /dev/lp0 ,这种打印机现在已经很少使用了,在Linux上使用这类打印机是一点问题都没有的。相信PostScript这个词大家都是听说过的,PS实际上是一种专门用语打印方面的脚本语言;能够直接支持PostScript的打印机,通常都是非常高级的办公用打印机;PS语言是计算机和这类打印机之间沟通的方式。
    再有就是现在我们经常用到的各种比较低档的打印机,喷墨的或者激光的都有;它们不支持PostScript,通常都是使用厂家自己的命令集。
  • 应用程序的打印支持:Linux上的各种应用程序,都是通过输出PostScript来描述需要打印的页面的,而在将来,这种趋势不会发生任何变化。
  • GhostScript:对于支持PostScript的打印机而言,要支持Linux是比较容易的,但对于那些并不支持PostScript的打印机而言,就必须要能够把PostScript格式的页面描述,转换成为这些打印机能够识别的打印命令。而GhostScript就是用来完成这个工作的,它能够解析PostScript命令,并用相应的驱动来显示它们。譬如GhostScript可以把一个PS文件显示在屏幕上,也可以借助打印机厂商的驱动将PS文件转换成打印命令。
  • PPD:PPD是用来描述打印机功能的文件,要使用一款打印机之前,必须找到其PPD文件,并正确地安装到打印管理器程序上。
  • 打印管理程序:作为一个多用户多任务的操作系统,Linux上的所有程序都是基于多任务、多用户而设计的,打印也不例外。为了让不同的用户、不同的任务在打印的时候不会产生冲突,就需要一个打印管理程序。这类管理程序很多,从传统的LPD,到时下非常流行的CUPS。它们功能各异,但有一点不变的就是都是用来协调打印任务的。CUPS的工作方式如下:通过命令行接收要打印的文件;通过文件的类型判断是否需要将其转换为PostScript,如果需要,则调用相应的应用程序进行转换;通过PPD文件来判断GhostScript应使用何种驱动处理此PostScript文件;把GhostScript处理的结果输出到打印设备上。
  • 把一切整合在一起:由于打印领域长时间的混乱,诞生了各种打印管理程序,而要学会为每一个打印管理程序安装驱动,是一件痛苦的事情(仅仅学习CUPS却是非常愉快的)。于是就出现了foomatic,它的作用是通过一种方式管理所有的打印机,把PPD和打印管理程序的配置屏蔽掉,给用户一个统一的界面。

综上所属,要在Linux上使用一台打印机,首先必须确定它被支持,然后需要选择一个打印管理程序并配置好打印驱动。最后,能否产生正确漂亮的打印结果,则要看应用程序能否生成正确的PostScript文件。过去,有很多程序不能正确的打印中文,主要就是因为它们不能正确的处理中文的字符集或者中文字体。下面,我会介绍在Debian上安装配置CUPS并进行打印的过程,并不包括foomatic。

用CUPS打印

Common Unix Printing System(CUPS)是一个出现的比较晚的打印管理程序,也正是如此,它的功能很现代,界面也非常友好。出现的晚,并不代表功能少和支持不广泛,CUPS拥有丰富的功能,支持各种各样的打印机,且被各种应用程序广泛地支持。

安装打印管理器

Debian上的CUPS被分散在几个软件包中,包括库、服务器、客户端等等。连接了打印机的机器需要安装服务器,而要提交打印任务的机器,则必须安装客户端。服务器的包是cupsys,客户端的包是cupsys-client和cupsys-bsd,前者是CUPS自己的客户端,后者是用来替换BSD的lp命令的,这样可以让一些比较古老的应用程序继续通过lp命令进行打印。

通过apt-get命令分别安装打印机和服务器:

# apt-get install cupsys foomatic-filters
# apt-get install cupsys-client cupsys-bsd

foomatic-filters这个软件包对于CUPS系统来说是非常必要的,千万别忘了。

安装打印机驱动程序

这里我们所说的驱动程序,包含以下三个方面:

  • PPD文件:要获得这个文件有很多的方法,但最简单的就是到http://www.linuxprinting.org去下载。同一台型号的打印机有时会有不同的PPD文件,譬如HP LaserJet 5000就有四个,要根据硬件的情况来选择,譬如其中的PostScript类型就不能用于HP LaserJet 5000LE款的打印机上,因为这一款打印机去掉了PostScript模块。下载PPD文件后,要将其复制到安装了CUPS服务器的计算机的/usr/share/cups/model目录中,然后重新启动CUPS的服务器。
  • GhostScript驱动:GhostScript有几个版本,其中Debian缺省使用的是gs-esp。这个版本的GhostScript已经将各种Free的驱动编译到其中。
  • 其它程序:如果是用HP系列的打印机,通常会需要hpijs。不同的厂商还会提供一些用于管理其打印机的程序,譬如检查墨盒容量等等,可根据自己的需要安装。

添加打印设备

安装好打印驱动之后,下一步的工作就是把已经完成的设备添加到CUPS的打印设备列表里面。这一步可以有很多种方式,但最简单的,就是用CUPS自己的Web管理界面。在安装了CUPS服务器的计算机上,访问http://localhost:631/就可以了。当添加打印机时,用户需要输入账号密码,此时可以用root账号,但只要用户在lpadmin这个组中,就可以管理打印机了。

添加的第一步是选择打印机的名称、位置、描述等,名称是比较重要的,以后都会用到。在选择完制造商后,就可以看到上述PPD文件所描述的打印机信息了,如果你找不到,可能是忘了重新启动cupsys服务。

使用

通过Web界面,可以完成全部管理打印机的操作,包括开启、关闭打印机,取消打印作业等等。如果要打印一个文件,就需要借助应用程序或者是CUPS的客户端了。

OpenOffice

OpenOffice有自己的打印配置程序,但如果你使用了CUPS,完全没有必要再去配置什么,OpenOffice可以自动识别到CUPS系统中添加的打印机。

Mozilla Firefox

Mozilla Firefox在使用打印机前,需要进行简单的设置。编辑文件/usr/lib/mozilla-firefox/defaults/pref/unix.js,并加入如下两行:

pref("font.FreeType2.enable", true);
pref("font.directory.truetype.1","/var/lib/defoma/x-ttcidfont-conf.d/dirs/TrueType/");

在Firefox的软件包中,上述文件并不存在,不用担心,加上就可以了。

Acrobat Reader

用Acrobat Reader使用打印机时,在其打印对话框中有Command选项,其缺省值为/usr/bin/lpr,因此用户必须安装cupsys-bsd软件包才行。如果打印时并非使用缺省的打印机和选项,则需要在这里进行自己设置。

gedit

在GNOME 2.8中,其打印组建gnomeprint已经比较成熟了。如果你现在仍然使用GNOME 2.8以前的版本,我建议你更新一下,这样gedit就可以正常地打印了。

命令行

CUPS的命令行程序有lplpstatcancel,对应的BSD打印命令行工具是lprlpqlprm。这些命令行程序都有很多参数,在CUPS的用户手册中有详细的描述,在此就不赘述了。需要说明的是,当传递给lp的文件不是PostScript或者PDF格式时,CUPS都要选择一个程序来将其转换为这个格式,其打印效果也就不得而知了。因此,建议用户首先想办法生成一个PS/PDF文件,然后再打印。

gtklp

要记住lp的每一个选项还是一件挺麻烦的事情,gtklp是一个允许用户在图形界面下选择打印选项的工具。它支持所有的CUPS选项,只要点点鼠标就可以打印啦。用户选择完毕后,它会自动调用lp命令的。gtklp软件包中还有一个gtklpq程序,通过它,可以查看和修改打印队列。

共享

共享打印机给Linux用户对于CUPS来说非常简单,只需要修改/etc/cups/cupsd.conf文件,允许其它用户访问/printer资源就可以了。我不知道Windows是否支持ipp协议,如果支持,也可以用这种方式打印。

常见的问题

  1. 为何XX程序不能打印中文?

    如上所属,能不能打印中文,关键在于负责生成PostScript的程序是否能够支持中文,很多老的命令行工具都是无法支持中文的,即便是新的软件,也不见得能够支持地很好。

  2. 显示时的中文粗体为何打印的时候没有?

    现在很多用xft/fontconfig的朋友都打了firefly的粗体补丁,但这个补丁仅仅是用在显示上的。当打印时,往往是直接从字库中提取字形信息,并嵌入到PostScript文件中的,字库里面是什么样子,打印出来就是什么样子。

  3. 我的打印机,Linux支持的不是很好,怎么办?

    我有一台Mac,还有一套正版的Windows,我打电话给微软客服,但它们却告诉我如果你要使用Windows,就一定要选择跟Windows兼容的计算机。如果你要用Linux,买硬件之前就一定要做一些简单的调查研究,对于那些技术很差根本不懂得如何支持Linux的硬件厂商的产品,就千万不要买。http://www.linuxprinting.org上可以查到各种打印机和Linux的兼容情况,查一下,除了兼容性之外,还能知道有些打印机为什么会便易,而另一些为什么贵

<think>我们正在回答用户关于Linux查看系统日志的问题。根据引用内容,我们可以总结出常用的命令和方法。注意:引用内容中提到了tail、cat、tac、head、echo、grep、less、awk、sed等命令,但用户主要关注查看或打印系统日志的方法。我们将重点介绍几个最常用的命令,并给出具体用法示例。另外,用户要求“打印或查看日志信息”,因此我们不仅要介绍查看方法,也要提及如何打印(通常指输出到终端或重定向到文件)。结构:1.介绍日志文件的位置(常见日志文件路径)2.详细说明每个常用命令的用法(包括查看和打印日志的示例)3.提供一些组合使用的技巧注意:引用[1]和引用[2]提供了部分命令的说明,我们将在此基础上扩展,并确保正确性。常见日志文件位置:-/var/log/messages:常规系统日志-/var/log/syslog:系统日志(Ubuntu等) -/var/log/auth.log:认证日志- /var/log/kern.log:内核日志- /var/log/dmesg:内核环形缓冲区日志(也可用dmesg命令查看)常用命令:1.tail:查看文件尾部,常用于实时监控日志2. cat:查看整个文件内容(适合小文件)3. less:分页查看,适合大文件4.grep:过滤日志内容5.head:查看文件头部6.tac:倒序显示(从最后一行到第一行)7.awk/sed:文本处理,用于格式化或提取特定内容我们将逐一介绍这些命令在查看日志时的用法。注意:用户可能需要知道如何实时查看日志(跟随新内容)以及如何搜索日志。</think>### Linux 查看系统日志方法总结 在 Linux 系统中查看日志是系统管理的基础操作,以下是常用命令和方法: #### 1. **实时追踪最新日志** ```bash tail -f /var/log/syslog ``` - `-f` 参数实时刷新日志(按 `Ctrl+C` 退出) - 查看最后 N 行:`tail -n 20 /var/log/syslog`[^2] #### 2. **查看完整日志文件** ```bash cat /var/log/kern.log ``` - 适合小文件(大文件可能刷屏) - 倒序显示:`tac /var/log/auth.log`(从末尾向开头显示) #### 3. **分页浏览大日志** ```bash less /var/log/syslog ``` - 支持上下翻页(`↑/↓` 方向键) - 搜索:输入 `/关键词`(按 `n` 跳转下一个) - 退出按 `q` #### 4. **过滤关键信息** ```bash grep "error" /var/log/syslog ``` - 组合使用:`grep -i "failed" /var/log/auth.log | less` - 正则搜索:`grep -E "192\.168\.1\.[0-9]+" /var/log/apache2/access.log` #### 5. **查看日志头部** ```bash head -n 50 /var/log/boot.log ``` - 显示日志文件前 50 行 #### 6. **特定时间范围日志** ```bash sed -n '/2023-10-01 08:00:/,/2023-10-01 09:00:/p' /var/log/syslog ``` - 提取 8:00 到 9:00 的日志 #### 7. **系统日志管理工具** ```bash journalctl -xe # 查看 systemd 日志 dmesg | less # 查看内核日志 ``` #### ⚠️ 注意事项: 1. 需要 root 权限查看部分日志:`sudo less /var/log/secure` 2. 日志路径常见位置: - 系统日志:`/var/log/syslog` - 认证日志:`/var/log/auth.log` - 内核日志:`/var/log/kern.log` - 应用日志:`/var/log/apache2/` 等应用专属目录 3. 打印日志到文件:`grep "error" /var/log/syslog > errors.txt` --- ### 相关问题 1. 如何实时监控多个日志文件的变化? 2. Linux 日志轮转(logrotate)的工作原理是什么? 3. 怎样通过日志诊断 SSH 登录失败问题? 4. 如何配置 Rsyslog 实现远程日志收集? [^1]: Linux 日志查看命令总结 [^2]: tail 命令常用参数示例
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值