如何在Linux命令行上检查PDF打印是否完成



我有一堆我需要通过PDF打印机打印的文件,在打印后,我需要执行其他任务,但只有在最终完成时才需要执行其他任务。

为此,我可以从我的python脚本来做命令" lpr path/to/file.doc -p pdf"

但是此命令立即返回0,我无法跟踪打印过程完成后,是否成功,等等...

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

您有一些想法如何完成此操作?

编辑1 有很多方法可以检查打印机目前是否正在打印某些东西。因此,在我开始打印某些内容后,我每0.5秒钟运行lpq命令,以找出它是否仍在打印。但这看起来不是最好的方法。我希望能够被提醒或实际打印过程完成后。它成功还是不成功...

如果您有杯子,则可以使用系统V兼容的lp而不是lpr。这是在stdout上打印的作业ID,例如

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

(这是针对虚拟打印机cups-pdf)。然后,您可以在lpstat的输出中使用此ID的grep

lpstat | grep '^PDF-5 '

如果没有产生输出,那么您的工作就完成了。lpstat -l产生更多状态信息,但其输出也很难解析。

显然,有更干净的Python解决方案,然后运行此实际的外壳代码。不幸的是,我找不到在不浏览工作列表的情况下检查单个作业状态的方法。

您可以使用lpstat命令(man lpstat)检查打印机的状态。要等待一个过程完成,请获取该过程的pid并将其传递给wait命令作为参数

最新更新