2012-12-27 72 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代碼。不幸的是,我無法找到一種方法來檢查單個作業的狀態,而無需翻閱作業列表。

相關問題