WEB开发网
开发学院操作系统Linux/Unix 在 AIX 上管理虚拟打印机 阅读

在 AIX 上管理虚拟打印机

 2009-09-06 00:00:00 来源:WEB开发网   
核心提示:尽管大多数 AIX 管理员知道如何通过 SMIT 或常见打印命令设置打印队列和管理打印,但是在 UNIX 上实现打印功能远远不止这些,在 AIX 上管理虚拟打印机,本文将带您一览 AIX 的假脱机(spooler)后端程序,比如 piomkpq、piolsvp、lsvirprt、chvirprt、rmvirprt,了解

尽管大多数 AIX 管理员知道如何通过 SMIT 或常见打印命令设置打印队列和管理打印,但是在 UNIX 上实现打印功能远远不止这些。本文将带您一览 AIX 的假脱机(spooler)后端程序,比如 piomkpq、piolsvp、lsvirprt、chvirprt、rmvirprt。

什么是虚拟打印机?

虚拟打印机即一种可以充当打印机驱动程序的软件;然而,虚拟打印机不需要被连接到一台真实的打印机中。如果您对此感到困惑,那么可以将虚拟打印机看作另一种形式的标准输出。如果希望创建 Portable Document Format (PDF) 格式,通常可以打开文本文档并将其保存为 PDF。这使用了一种虚拟打印机的形式 — 即将文本文档打印为某种格式,这种格式可以被保存到文件中并一定程度上防止其他作者修改。您可以使用虚拟打印机从文档中创建图像、传真文档,或将文档发送给一个队列,以针对特定类型的打印机进行格式化。最后一种情况正是本文所讨论的虚拟打印机。

找不到文件!它们在哪?

在详细研究虚拟打印机命令之前,需要了解本文所讨论的文件的位置。本文提到的大多数命令都未出现在用户的典型 PATH 环境变量中。解决这个小问题有两种简单的方法:

始终将完整路径打印到可执行文件中。

将虚拟打印机命令的路径添加到用户的 PATH 中。

如果命令的使用非常频繁,我建议将其添加到用户的 PATH 中。通常来讲,用户的 PATH 最初来自 AIX 中的 /etc/environment,随后用户用于本地环境变量的 ${HOME}/.profile 将在登录时或 ~/.profile 重新获取来源时进行更新。考虑到打印机管理通常由根用户管理,因此更明智的做法是修改根用户的本地 .profile 文件,而不是影响到所有用户。如果 ~root/.profile 并不存在,那么可以随意创建该文件。

首先,第一次编辑 PATH 变量需要注意一点:在将新的目录添加到 PATH 环境变量时,更聪明的做法是将新目录添加到当前 PATH 值的末端,而不是添加到开始部分。比较有经验的 UNIX 用户可能已经习惯这样做,但是对于新手来说,如果不遵循这种做法,则会导致问题。如果不熟悉 PATH 变量的工作方式,那么下面将稍作解释。当执行一个命令时,shell 必须读取用户的 PATH 环境变量来查找可执行文件。PATH 按照从左到右的顺序读取,并且使用冒号分隔。如果用户的 PATH 被设置为 A:B:C:D,那么 shell 将首先尝试在目录 A 中查找命令。如果未在其中找到,那么 shell 将继续在目录 B 中查找,依此类推。

问题在于:在这个例子中,用户的 PATH 最初被设置为 /usr/bin:/etc:/usr/sbin。如果存在多个命令版本(比如,/usr/bin/foo 和 /usr/local/bin/foo)并且用户仅输入命令而不是完全限定文件名,那么将尝试执行按照 PATH 变量顺序查找到的第一个实例(本例中为 /usr/bin/foo)。现在假设用户希望将 /usr/local/bin 添加到 PATH,以便能够轻松地查找和执行 /usr/local/bin/bar。然而,用户将新目录添加到 PATH 的开始部分(即 PATH=/usr/local/bin:${PATH})。bar 的执行非常顺利,但是用户现在在执行 foo 时得到了异常结果。这是因为现在执行的是 /usr/local/bin/foo 而不是最初的 /usr/bin/foo。要获得正确的结果,应当执行 PATH=${PATH}:/usr/local/bin。

对于典型的 AIX 系统,大部分虚拟打印机命令位于 /usr/lib/lpd/pio/etc 和 /usr/sbin 目录中,如 清单 1 所示。因此,可以将 PATH 更新为 PATH=${PATH}:/usr/sbin:/usr/lib/lpd/pio/etc。

清单 1. 虚拟打印机队列命令的位置

   
# find /usr \( -name piomkpq -o -name piolsvp -o -name lsvirprt -o -name chvirprt -o 
 -name rmvirprt \) -ls 
 
187195  36 -r-xr-s--- 1 root  printq  34894 Sep 16 2002 /usr/sbin/chvirprt 
187491  48 -r-xr-xr-x 1 root  printq  47474 Sep 16 2002 /usr/sbin/lsvirprt 
187763  44 -r-xr-s--- 1 root  printq  41474 Sep 16 2002 /usr/sbin/rmvirprt 
98653  40 -r-xr-xr-x 1 bin   bin    40522 May 26 2006 /usr/lib/lpd/pio/etc/piolsvp 
98706  36 -r-sr-x--- 1 root  printq  32782 Sep 16 2002 /usr/lib/lpd/pio/etc/piomkpq

创建一个虚拟打印机队列

通过命令行在 AIX 中创建打印队列是一件非常简单的事。通过使用 piomkpq 命令,可以快速创建新的打印队列并将一个打印机添加到现有队列中。

表 1 提供了一些在执行 piomkpq 时可以使用的 switch 语句,要获得完整的 switch 列表,请参考 man piomkpq。

表 1. piomkpq 中的 switch

Switch描述
-A <attachment>打印机如何连接到队列中?有效连接类型为:

local:打印机被连接到本地主机。

remote:打印机被连接到远程主机。

xstation:打印机被连接到 Xstation。

ascii:打印机被连接到 American Standard Code for Information Interchange (ASCII) 终端。

hpJetDirect:打印机为网络打印机。

file:打印机是 /dev 上的一个文件。

ibmNetPrinter:打印机是 IBM 网络打印机。

ibmNetColor:打印机是 IBM 网络彩色打印机。

other:打印机由用户定义。

-D <data stream>这个打印队列的数据流类型是什么?有效的数据流包括 asc、cht、eps、gl、kji、pcl、pro 和 ps。
-Q <queue name>在已存在的情况下使用打印队列 <queue name>。

注意:您不能同时使用-Q 和 -q switch,因为使用现有队列和创建新队列不能同时进行。

-a <attribute=value>应当对此队列设置哪些属性?可用的属性包括 interface、ptop、authconfig、speed、parity、bpc、stops、xon、dtr 和 tbc。
-d<device>设备的名称是什么(比如 lp0、tty2、fileA)?
-p <printer type>打印机的类型是什么?可以在 /usr/lib/lpd/pio/predef 下找到 AIX 中的有效打印机列表。
-q <queue name>创建一个新队列并将其命名为 <queue name>。

注意:不能同时使用 -Q 和 -q,因为使用现有队列和创建新队列不能同时进行。

-w <port>队列应当使用什么端口?
-s <type>w打印机是否通过 parallel、rs232 或 rs422 连接?

通常,用户指定 local、ascii 或 file 作为连接类型。如果您的 AIX 系统有其他的连接类型,那么可以在 /usr/lib/lpd/pio/etc 中查找连接类型配置文件(使用 .attach 扩展名),如 清单 2 所示。

清单 2. 连接类型配置文件的位置

   
# ls -l /usr/lib/lpd/pio/etc/*.attach 
-r--r--r-- 1 root  printq  1150 Sep 13 2002 /usr/lib/lpd/pio/etc/ascii.attach 
-r--r--r-- 1 root  printq  1144 Sep 13 2002 /usr/lib/lpd/pio/etc/file.attach 
-r--r--r-- 1 root  printq  1182 Jan 17 2003 /usr/lib/lpd/pio/etc/hpJetDirect.attach 
-r--r--r-- 1 root  printq  1209 Jan 17 2003 /usr/lib/lpd/pio/etc/ibmNetColor.attach 
-r--r--r-- 1 root  printq  1203 Jan 17 2003 /usr/lib/lpd/pio/etc/ibmNetPrinter.attach 
-r--r--r-- 1 root  printq  1188 Sep 13 2002 /usr/lib/lpd/pio/etc/local.attach 
-r--r--r-- 1 root  printq  1094 Sep 13 2002 /usr/lib/lpd/pio/etc/remote.attach 
-r--r--r-- 1 root  printq  1201 Sep 13 2002 /usr/lib/lpd/pio/etc/xstation.attach

清单 3 展示了 AIX 中的配置文件。

清单 3. AIX 中的示例配置文件

   
# grep -vE "^#|^[[:space:]]*$" /usr/lib/lpd/pio/etc/ascii.attach 
    # ASCII attachment 
    description   =    piobe.cat,4,20;Printer Attached to ASCII Terminal 
    add_queue    =    ps_makprt_prt 
    add_printer   =    ps_makprt_prt 
    seq_num     =    4 
    submit_job   =    ps_qprt_fileName 
    change_queue  =    ps_chpq_attachName 
    change_filters =    ps_pqfilters_ghostName 
    remove_queue  =    ps_rmpq_ghostName_other

现在您已经连了解了基本命令,让我们创建一个新打印队列:

# piomkpq –A local –p ibm6252 –d lp0 –D asc –q ATC_QUEUE 
Added print queue 'ATC_QUEUE'.

现在,使用 ASCII 数据流为现有的 IBM 6252(名为 lp0)打印机创建一个名为 ATC_QUEUE 的新本地打印队列:

# piomkpq –A local –p ibm6252 –D asc -Q ATC_QUEUE –d lp1 
Added printer 'lp1' to print queue 'ATC_QUEUE'.

观察到第一个和第二个 piomkpq 示例之间的差别了吗?虽然很细微,但是十分重要。第一个示例使用 -q switch 创建了一个新的打印队列。在第二个示例中,使用了 -Q 并告诉 piomkpq 使用现有的名为 ATC_QUEUE 的队列。如果刚刚接触 UNIX 或 Linux®,那么这个例子很好地演示了大小写对执行命令的重要性。仅仅将 q 修改为大写 Q 就会完全改变这个命令,如前面的例子所示。

要确认打印队列和适当的设备已被添加,需要查看 /etc/qconfig,如 清单 4 所示。打印机配置文件应当按照 lpstat 中的显示顺序在文件末端列出队列,因为它们是通过 piomkpq 在最后添加的,并且没有手动添加到 /etc/qconfig。

清单 4. /etc/qconfig 片段

   
ATC_QUEUE: 
    device = lp0,lp1 
lp0: 
    file = /dev/lp0 
    header = never 
    trailer = never 
    access = both 
    backend = /usr/lib/lpd/piobe 
lp1: 
    file = /dev/lp1 
    header = never 
    trailer = never 
    access = both 
    backend = /usr/lib/lpd/piobe

列出打印机

现在,您已经创建了一个打印队列或将一个打印机添加到现有队列中,最好能够确认队列已被创建并看看您的 AIX 系统中是否存在其他队列。在 AIX 中列出虚拟打印机甚至比创建它们更加简单。通过使用 piolsvp 命令,您可以查看现有打印队列或可用的连接类型。

表 2 提供了在执行 piolsvp 时可用的 switch。有关完整的 switch 列表,请参考 man piolsvp。

表 2. piolsvp 的 Switch

Switch描述
-A显示所有可用的连接类型。
-P <queue name>选择 <queue name> 以执行其他 switch。对 piolsvp 仅使用 –P 不会显示任何信息。
-d显示队列设备。
-n <field>显示配置文件中的 <field> 的连接名称和值。可用于查询的属性字段包括 submit_job、add_queue、add_printer、remove_queue、printer_conn、change_queue 和 change_filters。
-p展示所有队列、它们的描述和位置。
-q展示所有的队列和描述。
-v展示所有虚拟打印机。

在讨论 piomkpq 时,我提到您可以手动查看连接类型配置文件,因为这些文件属于 ASCII 文本。如果并不关心所有设置,仅仅希望得到一个快速清单,那么可以使用 piolsvp 命令,如 清单 5 所示。

清单 5. 查看连接类型

   
# piolsvp –A 
# ATTACHMENT TYPE   DESCRIPTION 
 local        Printer Attached to Local Host 
 remote        Printer Attached to Remote Host 
 xstation       Printer Attached to Xstation 
 ascii        Printer Attached to ASCII Terminal 
 hpJetDirect     Network Printer (HP JetDirect) 
 file         File (in /dev directory) 
 ibmNetPrinter    IBM Network Printer 
 ibmNetColor     IBM Network Color Printer 
 other        User Defined Backend

下面的示例演示了如何显示一个特定打印队列 — 在本例中,打印队列 ATC_HPLJ5:

# piolsvp -P ATC_HPLJ5 -d 
 
# PRINTER DESCRIPTION 
 hp@ATC_HPLJ5  hplj-5si (PCL)

清单 6 展示了如何快速浏览所有已定义的打印队列、它们的位置和描述。

清单 6. 显示所有打印队列

   
# piolsvp -p 
 
# PRINT QUEUE     PRINTER       DESCRIPTION 
 PAC06_ps       hp@PAC06       generic (PostScript) 
 PAC06_pcl      hp@PAC06       generic (PCL Emulation) 
 ATC08_pcl      hp@ATC08       generic (PCL Emulation) 
 AMDC79_ps      hp@AMDC79      hplj-4000 (PostScript) 
 LAB125_pcl      hp@LAB125      hplj-4000 (PCL) 
 LAB125_ps      hp@LAB125      hplj-4000 (PostScript) 
 ATC_HPLJ5pcl     hp@ATC_HPLJ5     hplj-5si (PCL) 
 ATC_HPLJ5PS     hp@ATC_HPLJ5     hplj-5si (PostScript) 
 ATC_QUEUE      lp0         IBM 6252 Impactwriter 
            lp1         IBM 6252 Impactwriter

下面的示例查询针对名为 add_queue 的字段查询队列 AMDC79_ps 的连接配置。由于队列使用的连接类型为 hpJetDirect,因此将搜索文件 /usr/lib/lpd/pio/etc/hpJetDirect.attach。

# piolsvp -P qaljlab1_pcl -nadd_queue 
 
hp@AMDC79_ps     hpJetDirect     ps_makhp_prt

为了保持简单,以上查询实际上被格式化为下面的 grep 语句:

# grep "add_queue" /usr/lib/lpd/pio/etc/hpJetDirect.attach 
 
add_queue    =    ps_makhp_prt

lpstat 命令对于大部分 UNIX 用户来说十分熟悉。它是大部分 UNIX 和 Linux 系统上的标准命令,可以显示一个打印机或若干打印机的状态,如 清单 7 所示。

清单 7. 使用 lpstat 查看打印队列

   
# lpstat -W 
 
Queue      Dev      Status    Job Files     User  PP  % Blks Cp Rnk 
--------------- -------------- ----------- ----------------- ------- ---- -- ----- -- --- 
PAC06_ps    hp@PAC06    READY 
PAC06_pcl    hp@PAC06    READY 
ATC08_pcl    hp@ATC08    READY 
AMDC79_ps    hp@AMDC79   READY 
LAB125_pcl   hp@LAB125   READY 
LAB125_ps    hp@LAB125   READY 
ATC_HPLJ5pcl  hp@ATC_HPLJ5  READY 
ATC_HPLJ5PS   hp@ATC_HPLJ5  READY 
ATC_QUEUE    lp0      READY 
ATC_QUEUE    lp1      READY

可以查看在 /var/spool/lpd/pio/@local/custom 创建的打印队列的实际配置文件:

# ls -l /var/spool/lpd/pio/@local/custom/ATC_QUEUE:lp[[:digit:]]* 
 
-rw-rw-r-- 1 root printq 7019 Apr 28 10:29 /var/spool/lpd/pio/@local/custom/ATC_QUEUE:lp0 
-rw-rw-r-- 1 root printq 7019 Apr 28 10:31 /var/spool/lpd/pio/@local/custom/ATC_QUEUE:lp1

配置文件为可读的 ASCII 文本。所谓可读,就是指它采用纯文本的形式,尽管这对于 UNIX 新手来说没有太大意义。例如,清单 8 展示了共 250 行的 ATC_QUEUE:lp0 中的前 20 行。

清单 8. 查看打印队列配置文件

   
# head -20 /var/spool/lpd/pio/@local/custom/ATC_QUEUE:lp0 
 
:056:__FLG:: 
:625:CB:S[B]DyEn: 
:626:CC:S[C]DyEn: 
:627:CD:S[D]DyEn: 
:629:CF:S[F]DyEn: 
:630:CG:S[G]DyEn: 
:622:Ca:DyS[G500]I[1810532]EnR[pioattr1.cat,1,631;(diag1) - do not print job; display 
main pipeline and pre-processing filter,(diag2) - do not print job; display all pipelines 
and filters,(display) - print job; display all pipelines and filters,(ignore) - print job; 
ignore stderr produced by filters,(normal) - print job; exit if filters produce stderr= 
-a1,-a0\x27 \x27-A3,-a0\x27 \x27-A2,-a0\x27 \x27-A0,-a0\x27 \x27-A1]:%?%G_a%t-a%I_a%e-a% 
I_a\x27 \x27-A%I_A%; 
:013:_A:DnEnR[0,1,2,3]:1 
:789:_E:S[B020]I[1810501]%IWY:! 
:621:_H:S[F350]I[1810503]Dy: 
:791:_J:S[C950]I[1810533]%IWY:+ 
:792:_K:S[B030]I[1810550]%IWY:! 
:793:_L:S[D020]I[1810504]%IWY:+ 
:036:_O:Dn:2 
:794:_W:S[B025]I[1810506]%IWY:! 
:795:_X:S[D030]I[1810507]EtL[/usr/bin/ls -1 /usr/lib/lpd/pio/trans1 | /usr/bin/sed '/^850 
$/d']V[%`WX]:ISO8859-1 
:614:_Z:S[D035]I[1810534]%IWY:+ 
:063:_a:DnEnR[0,1]:0 
:635:_b:S[D010]I[1810508]E#G[0..%?%G_l%{0}%=%t%e%G_l%G_t%-%{1}%-%d%;]:0 
:658:_d:S[C925]I[1810509]EnL[%IW2]F1:a

查看虚拟打印机属性

现在,我们创建了虚拟打印机,来看一下它的属性。要查看虚拟打印机的属性,需要使用 lsvirprt 命令。

表 3 提供了可以在执行 lsvirprt 时使用的 switch。有关完整的 switch 列表,请参考 man lsvirprt。

表 3. lsvirprt 的 switch

Switch描述
-a <attribute>仅显示 <attribute>。这非常有必要,因为虚拟打印机的属性列表非常大。
-d <device>查询队列的名为 <device> 的设备。
-q <queue>查询打印机的名为 <queue> 的队列。

清单 9 使用 lsvirprt 列出本文前面创建的虚拟打印机的所有属性。

清单 9. 列出虚拟打印机属性

   
# lsvirprt -q ATC_QUEUE -d lp0 | more 
 
Name  Description                     Value 
__FLG  VALUES THAT MAY BE OVERRIDDEN WITH FLAGS ON THE 
     COMMAND LINE 
CB   -------------- Text Print Options ------------- 
CC 
----------- Job Processing Options ------------ 
CD 
----------- Text Formatting Options ----------- 
CF 
--------- Header/Trailer Page Options --------- 
CG 
------------- Messages/Diagnostics ------------ 
Ca   DIAGNOSTIC LEVEL                   %?%G_a%t-a%I_a%e-a 
                               %I_a\x27 \x27-A%I_ 
                               A%; 
_A   stderr returned? 0: no; 1: yes, & pipelines; 2:  1 
     yes, & values, pipelines 
_E   DOUBLE-HIGH print?                  ! 
_H   HOSTNAME for "PRINTED AT:" on HEADER PAGE 
_J   RESTORE printer?                   + 
_K   CONDENSED print?                   ! 
_L   WRAP long lines?                   + 
_O   Type of Input Paper Handling (1: manual, 2:     2 
     pinwheel, 3: sheetfeed) 
_W   DOUBLE-WIDE print?                  ! 
_X   CODE PAGE of print file               ISO8859-1 
_Z   Send FORM FEED after each file?           + 
_a   0: Normal Print; 1: Return Flag Values &      0 
     Pipeline, But Don't Print 
_b   BOTTOM MARGIN (lines)                0 
_d   Print file TYPE                   a 
_e   EMPHASIZED print?                  ! 
_f   Pre-processing FILTER NAME 
_g   PAGE NUMBER where printing should begin       1 
_h   TITLE STRING for 'pr' filter 
_i   Number of columns to INDENT             0 
_j   INITIALIZE printer?                 + 
_l   LINES per page                    66

注意,我将输出传递给 more。因此可以查看虚拟打印机的所有属性。仅这台虚拟打印机就拥有大约 500 行属性。

如果知道要查看哪个字段,可以将属性名附加到 -a switch 中。本例中将查看每个页面中的行或 _l(小写 L):

# lsvirprt -q ATC_QUEUE -d lp0 -a _l 
 
Name  Description                     Value 
_l   LINES per page                    66

修改虚拟打印机属性

目前为止已经创建了一个虚拟打印机并查看了属性。现在修改其中一个虚拟打印机。chvirprt 命令允许您将一个已知属性修改为一个合适的值。

表 4 提供了在执行 chvirprt 时可以使用的 switch。有关完整的 switch 列表,请参考 man chvirprt。

表 4. chvirprt 的 switch

Switch描述
-a <attribute=value>将 <attribute> 修改为拥有值 <value>。
-d <device>查询队列中名为 <device> 的设备。
-q <queue>查询打印机中名为 <queue> 的队列。

阅读了前面有关 lsvirprt 的小节后,现在您已经了解了如何查看每个页面中的值。要在此基础上进行扩展,请执行下面的步骤,将值从 66 修改为 50:

首先,查看属性值,从而知道在需要时应当如何执行恢复:

# lsvirprt -q ATC_QUEUE -d lp0 -a _l 
 
Name  Description                     Value 
_l   LINES per page                    66

注意:应当始终对初始值和新值进行归档,以防需要恢复到初始值。

将每个页面的行数从 66 修改为 50:

# chvirprt -q ATC_QUEUE -d lp0 -a _l=50

检验修改是否成功:

# lsvirprt -q ATC_QUEUE -d lp0 -a _l 
 
Name  Description                     Value 
_l   LINES per page                    50

可以看到,针对每页面的行数进行了修改。

如果完成修改后,使用打印机的组管理者希望将值修改为 60,并且希望将水平和垂直选项卡的最大数量修改为 62,这时该怎么办?幸运的是,可以同时完成这两项修改,只需执行以下步骤:

首先,再次查看属性值,了解在需要时应当恢复为什么值,如 清单 10 所示。

清单 10. 列出多个虚拟打印机属性

    
# lsvirprt -q ATC_QUEUE -d lp0 -a _l -a mx -a my 
 
Name  Description                     Value 
_l   LINES per page                    50 
mx   Maximum Number of Horizontal Tabs That Can Be    64 
     Defined 
my   Maximum Number of Vertical Tabs That Can Be     64 
     Defined

将属性修改为理想值:

# chvirprt -q ATC_QUEUE -d lp0 -a _l=60 mx=62 my=62

查看修改是否成功,如 清单 11 所示。

清单 11. 列出多个虚拟打印机属性

    
# lsvirprt -q ATC_QUEUE -d lp0 -a _l -a mx -a my 
 
Name  Description                     Value 
_l   LINES per page                    60 
mx   Maximum Number of Horizontal Tabs That Can Be    62 
     Defined 
my   Maximum Number of Vertical Tabs That Can Be     62 
     Defined

可能是我有一些多疑,总觉得会同时修改队列中的所有设备,或者不小心修改为一个错误的值。但是,多进行一些检查始终是一种好的做法。在 清单 11 中,注意只有设备 lp0 得到了修改,而 lp1 保持初始值,如 清单 12 所示。

清单 12. 列出多个虚拟打印机属性

   
# lsvirprt -q ATC_QUEUE -d lp1 -a _l -a mx -a my 
 
Name  Description                     Value 
_l   LINES per page                    66 
mx   Maximum Number of Horizontal Tabs That Can Be    64 
     Defined 
my   Maximum Number of Vertical Tabs That Can Be     64 
     Defined

删除虚拟打印机

不管您是出于什么原因要删除队列:输入了错误的队列名、不再需要使用打印队列,或者仅仅是想知道如何删除队列,在 AIX 中删除虚拟打印队列十分简单。IBM 提供了 rmvirprt 命令来满足管理人员的好奇心。

要删除本文前面创建的两个虚拟打印机,只需执行下面的命令:

# rmvirprt -q ATC_QUEUE -d lp1 
# rmvirprt -q ATC_QUEUE -d lp0

通过执行 rmvirprt,您就可以删除指定给打印队列的虚拟打印机。打印队列仍然存在,但是在再次查看打印机时,描述已经被删除,如 清单 13 所示。这是因为虚拟打印机配置文件已经通过 rmvirprt 被删除。

清单 13. 显示所有打印队列

   
# piolsvp -p 
 
# PRINT QUEUE     PRINTER       DESCRIPTION 
 PAC06_ps       hp@PAC06       generic (PostScript) 
 PAC06_pcl      hp@PAC06       generic (PCL Emulation) 
 ATC08_pcl      hp@ATC08       generic (PCL Emulation) 
 AMDC79_ps      hp@AMDC79      hplj-4000 (PostScript) 
 LAB125_pcl      hp@LAB125      hplj-4000 (PCL) 
 LAB125_ps      hp@LAB125      hplj-4000 (PostScript) 
 ATC_HPLJ5pcl     hp@ATC_HPLJ5     hplj-5si (PCL) 
 ATC_HPLJ5PS     hp@ATC_HPLJ5     hplj-5si (PostScript) 
 ATC_QUEUE      lp0          
            lp1

除了删除打印机队列描述外,注意实际的虚拟打印机也被从 /var/spool/lpd/pio/@local/custom spool 目录中删除:

# ls -l /var/spool/lpd/pio/@local/custom/ATC_QUEUE:lp[[:digit:]]* 
 
ls: 0653-341 The file /var/spool/lpd/pio/@local/custom/ATC_QUEUE:lp[[:digit:]]* does not 
exist.

要在删除虚拟打印机后删除一个打印队列,遵循以下步骤:

查看涉及到的打印机队列:

# lsque -q ATC_QUEUE 
ATC_QUEUE: 
    device = lp0,lp1

删除打印机队列设备:

# rmquedev -d lp1 -q ATC_QUEUE 
# rmquedev -d lp0 -q ATC_QUEUE

检查打印机队列设备是否被删除:

# lsque -q ATC_QUEUE 
ATC_QUEUE: 

从打印队列中删除所有设备之后,删除实际的队列:

# rmque -q ATC_QUEUE

要检查虚拟打印机、打印机设备和打印队列确实被删除,执行以下步骤:

通过 lsque 确认打印机队列确实被删除。 # lsque -q ATC_QUEUE 
lsque: (FATAL ERROR): 0781-193 Queue ATC_QUEUE: not found in qconfig file. Not 
printed.

通过 piolsvp 确认打印机队列和设备确实被删除,如 清单 14 所示。

清单 14. 显示所有打印队列

    
# piolsvp -p 
# PRINT QUEUE     PRINTER       DESCRIPTION 
 PAC06_ps       hp@PAC06       generic (PostScript) 
 PAC06_pcl      hp@PAC06       generic (PCL Emulation) 
 ATC08_pcl      hp@ATC08       generic (PCL Emulation) 
 AMDC79_ps      hp@AMDC79      hplj-4000 (PostScript) 
 LAB125_pcl      hp@LAB125      hplj-4000 (PCL) 
 LAB125_ps      hp@LAB125      hplj-4000 (PostScript) 
 ATC_HPLJ5pcl     hp@ATC_HPLJ5     hplj-5si (PCL) 
 ATC_HPLJ5PS     hp@ATC_HPLJ5     hplj-5si (PostScript)

最后,通过 lpstat 确认打印机队列确实被删除,如 清单 15 所示。

清单 15. 使用 lpstat 确认打印机队列确实被删除

    
# lpstat -W 
Queue     Dev      Status  Job  Files  User    PP  % Blks Cp Rnk 
-------------- -------------- -------- ------ ------- ---------- ---- -- ----- -- --- 
PAC06_ps    hp@PAC06    READY 
PAC06_pcl   hp@PAC06    READY 
ATC08_pcl   hp@ATC08    READY 
AMDC79_ps   hp@AMDC79   READY 
LAB125_pcl   hp@LAB125   READY 
LAB125_ps   hp@LAB125   READY 
ATC_HPLJ5pcl  hp@ATC_HPLJ5  READY 
ATC_HPLJ5PS  hp@ATC_HPLJ5  READY

结束语

阅读完本文后,您应该更深入地解了到 AIX 中的虚拟打印机概念、如何创建它们、如何修改或管理它们的设备和队列。了解更多有关打印机和在系统中设置队列的知识非常重要。很多人并没有意识到可以轻松修改大量队列设置。通过根据需求修改打印机能够为用户提供便利。祝您好运!

Tags:AIX 管理 虚拟

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接