Как проверить, завершена ли печать PDF в командной строке linux

У меня есть куча файлов, которые мне нужно распечатать с помощью PDF-принтера, и после его распечатки мне нужно выполнить дополнительные задачи, но только после того, как она будет завершена.

Поэтому, чтобы сделать это из моего сценария python, я вызываю команду «lpr path / to / file.doc -P PDF»

Но эта команда немедленно возвращает 0, и у меня нет способа отслеживать, когда процесс печати завершен, успешно или нет и т. Д. …

Существует возможность отправлять электронную почту, когда печать выполняется, но ждать электронной почты после того, как я начну печатать, выглядит очень взломанным для меня.

У вас есть идеи, как это сделать?

Редактирование 1 Существует множество способов проверить, печатает ли принтер что-то в данный момент. Поэтому в тот момент, когда я начинаю печатать что-то, я запускаю команду lpq каждые 0,5 секунды, чтобы узнать, все еще ли она печатается. Но это выглядит не лучшим способом. Я хочу быть в состоянии получить предупреждение или что-то, когда процесс фактической печати будет завершен. Было ли это удачным или нет и т. Д. …

Вы можете проверить состояние принтера, используя команду lpstat ( man lpstat ). Чтобы дождаться завершения процесса, получить PID процесса и передать команду wait качестве аргумента

Если у вас есть CUPS , вы можете использовать lp совместимый с System V, вместо lpr . Это выводит на стандартный stdout идентификатор задания, например

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

(это для виртуального принтера cups-pdf ). Затем вы можете grep для этого id в выводе lpstat :

 lpstat | grep '^PDF-5 ' 

Если это не выдаст результат, ваша работа будет выполнена. lpstat -l производит больше информации о статусе, но его результат также будет немного сложнее проанализировать.

Очевидно, что есть более чистые решения Python, а затем запуск этого реального кода оболочки. К сожалению, я не смог найти способ проверить статус одного задания без вспашки по списку заданий.