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

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

所以要从我的Python脚本做到这一点,我调用命令“lprpath/到/ file.doc -P PDF”

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

打印完成后,可以select发送电子邮件,但开始打印后等待电子邮件对我来说看起来很不好。

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

编辑1有很多方法可以检查打印机当前正在打印什么东西。 因此,在我开始打印某些东西的那一刻,我每隔0.5秒运行一次lpq命令,以确定它是否仍在打印。 但是这对我来说并不是最好的办法。 我希望在实际打印过程结束时能够得到提醒或其他信息。 成功与否等等…

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

如果您有CUPS ,则可以使用System V兼容的lp来代替lpr 。 这将在stdout上打印一个作业ID,例如

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

(这是虚拟打印机cups-pdf )。 然后你可以在lpstat的输出中grep这个id:

 lpstat | grep '^PDF-5 ' 

如果没有产出,那么你的工作就完成了。 lpstat -l会产生更多的状态信息,但是它的输出也会比较难解析。

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