qdaemon 测试

如果向假脱机程序提交作业导致没有可辨别的假脱机程序活动,请使用以下信息确定并解决问题。

假设有一个名为 asc 的本地 ASCII 打印队列。

qdaemon 是否正在运行?

发出命令 enq -Pasc /etc/motd。 如果 qdaemon 未处于活动状态,将显示以下消息的变体:

enq: (WARNING): Cannot awaken qdaemon. (request accepted anyway)
enq: errno = 2:  No such file or directory
enq: (WARNING): Cannot awaken qdaemon. (request accepted anyway)
enq: errno = 2:  No such file or directory

发出命令 ps -ef | grep qdaemon 来验证 qdaemon 未处于活动状态。 如果 qdaemon 未处于活动状态,那么最多应该会看到表示 grep 本身的输出行。 它应该类似于:

root  2992 18792   0 12:46:39  pts/2  0:00 grep qdaemon

如果 qdaemon 是活动的,而它几乎肯定不应该是活动的,那么您将看到以下行的变体:

root  2980 3652    0 12:41:25   -   0:00 /usr/sbin/qdaemon

如果 qdaemon 未处于活动状态,请发出命令 startsrc -s qdaemon 以重新启动 qdaemon。 如果 qdaemon 已结束,它应该由 srcmstr 进程自动重新启动,但是这并非总是有效,因此请手动重新启动它。 您应该看到此消息的变体:

0513-059 The qdaemon Subsystem has been started. Subsystem PID is 3000.

请稍等片刻,然后重新发出命令 ps -ef | grep qdaemonqdaemon 仍然活动?还是启动然后退出?

qdaemon 可能不再处于活动状态,尽管您刚刚重新启动它并接收到一条消息,指示进程标识 (PID) 为 qdaemon。 检查名为 /var/spool/lpd/stat/pid 的文件的存在。 您可以发出命令 cat /var/spool/lpd/stat/pid 来执行此操作。 此文件包含 活动的 qdaemon 的 PID。 当 qdaemon 处于不活动状态时, 应该 除去该文件。

如果 cat 命令在您的显示器上打印出一个编号, 那应该是活动的 qdaemon 的 PID。 如果您已确定 qdaemon 未处于活动状态,请除去文件 /var/spool/lpd/stat/pid ,因为 qdaemon 的先前实例以某种方式退出而不会导致除去此文件。 如果文件不存在,您应该看到类似于下面的消息:

cat: cannot open /var/spool/lpd/stat/pid

qdaemon 不活动,您重新启动它,它再退出, 文件 /var/spool/lpd/stat/pid 曾经存在,您除去了该文件。 使用命令 startsrc -s qdaemon再次重新启动 qdaemon 。 等待一分钟左右,然后再次发出命令 ps -ef | grep qdaemon,观察 qdaemon 是否保持活动状态。 您也可以再次发出命令 cat /var/spool/lpd/stat/pid,观察文件是否被重新创建并且现在包含有效的 PID。

如果对原始问题的答案是 qdaemon 是否正在运行?是,是,那么 qdaemon 可能正在等待所有当前正在运行的作业完成,然后才会显示接受新作业的任何迹象。 当运行基本操作系统的机器有许多(超过 25 个)打印机连接到异步适配器(如 64 端口或 128 端口适配器)时,经常出现此情况。

要检查 qdaemon 是否正在等待作业完成,然后再运行任何其他作业,请使用 lpstat 命令来查看是否有任何作业的状态为 RUNNING。 如果是,在物理上检查显示 RUNNING 作业的打印机,并验证实际上至少有一个作业正在运行。 如果因为卡纸或缺纸而导致一个或多个打印机显示 DEV_WAIT,请更正问题并查看打印机是否开始打印。 如果未开始打印,请再次使用 lpstat 命令查看队列状态是否为 RUNNING。 在这些情况下,检查打印机的目的是为了验证即使 qdaemon 未启动新作业,实际上至少有一个打印机正在打印。

现在,使用命令 enq -Pasc /etc/motd向假脱机程序提交新作业。

使用 lpstat 命令检查队列状态。 如果新作业的作业号为 NEW,那么 qdaemon 由于某种原因在集中运行其他作业,除非当前作业完成,否则将不启动任何新的作业。 您只能等待。 您甚至不能取消正在运行的作业,因为作业取消请求本身也是作业, 而 qdaemon 不接受任何新的作业。