linux经过长时间的发展,很多用户都很了解打印命令了,在这里我发表一下个人理解,和大家讨论讨论在Linux下采用假脱机(spooling)打印方法。
在Linux下采用假脱机(spooling)打印方法,当用户需要打印一个文件时,该文件并不直接送到打印机,而是送到spool目录下,然后由一个负责打印的后台进程把这些数据送入打印机。
Linux对每台打印机都定义了一个打印缓冲区,打印机守护程序经常扫描打印缓冲区以查看有无要打印的新文件。如果存在,就按先进先出的顺序打印缓冲区中的文件。
Linux系统除了可以在本地打印机上打印外,还可以通过网络打印机远程打印。
用于linux脱机打印命令
Linux系统提供了一组有关打印的命令。一般情况下,打印命令使用默认打印机;如果用户定义了PRINTER环境变量,打印命令就使用这个变量定义的打印机;另外,用户还可以在命令行上指定要使用的打印机。
Linux脱机打印命令
lpr命令
lpr命令是linux脱机打印命令,该命令将打印作业放到打印缓冲队列中。为Linux系统指定的每台打印机都有自己的打印缓冲目录,每个目录中的minfree文件指定保存打印文件的磁盘块的数量。
lpr同lpd守护进程通讯,lpd扫描/etc/printcap文件,查询打印机对应的缓存目录,然后由lpd控制打印,将需要打印的数据送到实际打印机上。如果没有指定文件,lpr就使用标准输入。
lpr命令的格式为:
lpr [-P printer] [#num] [其他选项] [name…]
命令中各选项的含义如下:
-P 指定打印机。如果不用此选项,则使用缺省打印机或环境变量PRINTER指定的打印机。
-m 打印完毕后发送email。
-#num 打印num份。
lpq命令
lpq 是缓冲队列检查命令,它通过lpd在缓冲区中检查打印文件,报告指定作业的状态或指定用户的所有作业。不带任何参数的lpq命令显示现在队列中的任何作业。lpq命令的显示结果中一个重要的信息就是作业标识号(作业ID),它标识一个特定的作业。如果用户想取消一个挂起的作业,就必须在命令中指定这个标识号。
lpq命令的格式为:
lpq [-l] [-P printer] [job #] [user…]
命令中各选项的含义如下:
-P 指定一个打印机,否则使用缺省打印机或环境变量PRINTER指定的打印机。
-l 打印组成作业的所有文件的信息。
对提交的每一个作业,lpq报告用户名、在队列中的级别、组成作业的文件、作业标识以及总的大小等信息。
lprm命令
lprm命令用于从缓冲队列中删除打印作业,用户可以使用该命令从缓冲队列中删除属于自己的一个或多个打印作业。
lprm命令的格式为:
lprm [-P printer] [-] [job #] [user…]
命令中各选项的含义如下:
-P 指定一个打印机,否则使用缺省打印机或环境变量PRINTER指定的打印机。
- 删除用户所有的打印作业。
user 删除队列中属于用户user的作业(只有超级用户可以这样做)。
job # 通过指定作业号#删除某个打印作业,作业号可以通过lpq命令得到,如:
$ lpq –l
lst:ken [job #013ucbarpa]
(standard input) 100 bytes
$ lprm 13
linux脱机打印命令缓冲区目录
对打印而言,有一个非常重要的目录,就是打印缓冲区目录,要打印的数据在被打印之前都集中到这里。通常一台打印机对应一个打印缓冲区目录,这样比较容易管理打印机。例如,系统使用/var/spool/lpd作为主打印缓冲区,每个单独的打印机都在主打印缓冲区下有一个与这台打印机同名的目录。因此,名为 ps_nff的打印机把/var/spool/lpd/ps_nff作为它的打印缓冲区目录。