2011-09-30 51 views
1

我試圖使用自動化的bash shell腳本生成PDF,每分鐘後腳本檢查它通過線conatins所有URL行文件url.txt的內容和我使用wkhtmltopdf生成PDFPdf不使用wkhtmltopdf生成使用自動化的Linux Bash Shell腳本?

但問題是不是在自動化過程中生成pdf,但如果我手動調用該腳本pdf生成。如果有人知道解決方案,請提供給我? 腳本代碼是:

while read line; 做 wkhtmltopdf $線/var/www/images/Upload_files/name_of_file.pdf 做< /var/www/url/url.txt

+0

有時,當你運行的作業出來的cron的,你運行時,你會不會有相同的環境從shell - 尤其是路徑到像wkhtmltopdf這樣的bin文件。你有沒有嘗試用完整路徑調用它? – mogoman

+0

我已經使用了完整的路徑,即/ usr/bin/wkhtmltopdf,但它仍然不起作用 – ksingh

+0

有點調試可能會幫助你 - 在'do'之後,添加類似'echo'處理$ line「'的東西。總是將自動化記錄到一個文件是一個好主意,因此在你的crontab行中,在命令後面添加'>> /tmp/log.txt 2>&1'來記錄所有腳本的輸出。這應該有助於找到問題 – mogoman

回答

1

如果您在cron運行它,那麼最有可能的原因是它止跌」工作是因爲缺乏X服務器。在這種情況下,一個解決方案是使用Xvfb

嘗試使用xvfb-run這樣在沒有-X的環境,比如運行您wkhtmltopdf,通過SSH-ING爲localhost並驗證$DISPLAY環境變量未設置:

$ xvfb-run -e /tmp/xvfb-error.log -s'-screen 0 1024x768x24' wkhtmltopdf somefile.html output.pdf 

如果這工作正常,然後放入一個每1分鐘運行一次的cron作業來測試一個班輪是否在cron下工作。

否則檢查/tmp/xvfb-error.log文件以查看xvfb是否給出任何錯誤。

這將是有益的,如果你可以說你得到了錯誤消息,當它不工作

+0

我有xvfb但仍然它不起作用 – ksingh

+0

Heed @ mogoman的建議 - 檢查你的cron作業日誌是否有錯誤。通常,由cron作業運行的命令的輸出通過電子郵件發送到某個地方。因此,請檢查該電子郵件或將命令的stderr和stdout重定向到另一個文件並檢查內容。 – holygeek

+0

上手動調用上述命令它工作正常,生成pdf,但是當我把它放在cron作業pdf不生成和xvfb-error.log有消息服務器已經爲顯示器99活動如果服務器不再運行,刪除/tmp/X.99-lock並重新開始 – ksingh