2012-12-27 63 views
3

我有一堆需要通过PDF打印机打印的文件,打印完成后我需要执行其他任务,但只能在最后完成时执行。如何在Linux命令行上检查pdf打印是否已完成

因此,要做到这一点从我的Python脚本我调用命令“LPR路径/到/ FILE.DOC -P PDF”

但此命令立即返回0,我也没有办法跟踪,当打印过程结束,它是否成功等...

有一个选项可以在打印完成时发送电子邮件,但是在开始打印后等待电子邮件对我来说看起来很不好。

你有一些想法如何做到这一点?

编辑1 这里有很多方法可以检查打印机打印在当前时刻的东西。因此,在开始打印某些东西之后,我每0.5秒运行一次命令lpq,以确定它是否仍在打印。但这看起来并不是最好的方式。我希望在实际打印过程完成时能够收到提醒或其他信息。成功与否等...

+0

你确定你可以做为一个用户吗?我很怀疑,因为我的惠普打印机发送作业,并完成。它从打印机队列中以“发送”的方式消失,但打印机在开始打印前可能需要几秒钟的时间,我不知道打印机是否可以将反馈发送回计算机。 – CppLearner

回答

1

您可以使用lpstat命令(man lpstat)检查打印机的状态。等待进程结束,得到进程的PID,并通过它wait命令参数

1

如果你有CUPS,您可以使用系统V兼容lp代替lpr。这在stdout上打印作业ID,例如,

request id is PDF-5 (1 file(s)) 

(这是用于虚拟打印机cups-pdf)。然后,您可以grep这个ID在lpstat输出:

lpstat | grep '^PDF-5 ' 

如果不产生输出,那么你的工作就完成了。 lpstat -l可以产生更多的状态信息,但其输出结果也有点难以分析。

显然,有更清晰的Python解决方案,然后运行这个实际的shell代码。不幸的是,我无法找到一种方法来检查单个作业的状态,而无需翻阅作业列表。

相关问题