30 FreeBSD连载:配置打印机( 五 )


当一切都配置正确之后,使用打印机就非常简单了 。为了自动启动lpd守护进程,需要将/etc/rc.conf文件中的lpd_enable项设置为lpd_enable=”Yes”,FreeBSD在下次系统启动时会自动启动lpd 。当lpd没有启动时,也不需要重起计算机,简单使用root身份执行lpd就可以启动这个守护进程 。有了lpd守护进程,打印系统就能正常进行打印工作,并能针对整个网络上的用户,提供打印服务了 。
使用者可以直接使用lpr命令打印文件,或者通过管道来使用lpr命令 。
$ lpr hello.c
$ ls | lpr如果系统中某个打印机没有配置打印过滤器,用户可以直接使用自己的打印过滤器,通过管道将输出送到lpr中 。这提供了一种较灵活的配置方式,使得用户不需要root权限,也能使用合适的打印机过滤器 。下面是一个使用gs打印文件的例子:
$ gs -dNOPAUSE -q -sljet4 -sOutputFile=|lpr -- tt.ps注意这个例子中使用反斜线取消竖线的特殊含义,将其和紧随其后的lpr一起作为参数发送给gs,gs再将其解释为管道操作 。可以将上面的文件编制成shell程序,这样每次就能更方便的使用 。
当使用lpr将打印作业放入打印缓冲区之后,就能使用lpq命令来查看打印队列的内容:
$ lpq
waiting for lp to become ready (offline ?)
RankOwnerJobFilesTotal Size
1stuser1hello.c151 bytes
2nduser2(standard input)3359 bytes
3nduser3(standard input)43765 bytes在这个例子中,由于打印机lp没有被正常连接到系统上,因此lpq在第一行提醒使用者当前打印机不正常 。由于这台打印机工作不正常,因此用户可能不想使用这个打印机进行打印了,而想通过其他打印机进行打印 。为了避免在这台打印机正常之后,仍然打印这个作业,需要将这个打印作业删去 。这可以通过命令lprm加上作业序号(显示在lpq中第三列)来完成:
$ lprm 1
dfA001freebsd.domain dequeued
cfA001freebsd.domain dequeued或者使用all作参数,这将删除该用户的所有打印作业 。用户只能删除自己的打印作业,只有root才能删除其他用户的作业 。如果root使用all参数,那么将会将这个打印机缓冲区中的所有打印作业全部清空 。
作为系统管理员,需要进一步的能力来管理打印守护程序 。BSD风格的打印系统使用lpc来执行这个功能,以root身份启动lpc,则进入lpc的交互模式,然后使用help命令可以得到管理命令的列表 。一般可以使用start all命令来启动所有的打印机,或者使用stop lp命令来停止一台名为lp的打印机 。
# lpc
lpc > start all也可以用命令行的方式使用lpc,例如重新启动所有的打印机,使用带参数的lpc发出以下命令:
# lpc restart all未完,待续 。。。

推荐阅读